a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統(tǒng) > Android > 正文

android自定義view實(shí)現(xiàn)數(shù)字進(jìn)度條

2019-10-21 21:31:21
字體:
供稿:網(wǎng)友

之前看到過一個(gè)數(shù)字進(jìn)度條,一直想寫,今天就把這個(gè)實(shí)現(xiàn)下,想起來也是很簡單的,先看下實(shí)現(xiàn)的效果:

android,view,數(shù)字進(jìn)度條

思路:

繪制2根線 繪制進(jìn)度條的文字,不斷的改變起點(diǎn)和終點(diǎn),然后沒多少時(shí)間去更新UI就ok,在這就不畫圖了,看代碼就看的明白,不要想的很復(fù)雜!

 

package com.tuya;import android.animation.ValueAnimator;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.util.AttributeSet;import android.view.View;/** * Created by admin on 2016/12/19. */public class DownLoadProgressView extends View { private Paint paint;//繪制進(jìn)度條畫筆 private Paint textPaint;//繪制文字畫筆 private Paint dottePaint;//繪制灰色線畫筆 private int width; private int height; private int padding =5; private int value = 0; public DownLoadProgressView(Context context) {  this(context,null); } public DownLoadProgressView(Context context, AttributeSet attrs) {  this(context, attrs,0); } public DownLoadProgressView(Context context, AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr);  initPaint(); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) {  super.onSizeChanged(w, h, oldw, oldh);  width = w;  height = h; } /**  * 初始化畫筆  */ private void initPaint() {  paint = new Paint();  paint.setAntiAlias(true);  paint.setStrokeWidth(2);  paint.setStyle(Paint.Style.FILL);  paint.setColor(Color.BLUE);  textPaint = new Paint();  textPaint.setAntiAlias(true);  textPaint.setStrokeWidth(3);  textPaint.setStyle(Paint.Style.FILL);  textPaint.setColor(Color.BLUE);  textPaint.setTextSize(12);  dottePaint = new Paint();  dottePaint.setAntiAlias(true);  dottePaint.setStrokeWidth(2);  dottePaint.setStyle(Paint.Style.FILL);  dottePaint.setColor(Color.parseColor("#e5e5e5")); } @Override protected void onDraw(Canvas canvas) {  super.onDraw(canvas);  String str = value+"%";  float strWidth = textPaint.measureText(value+"%")+padding;//繪制文字的寬度 +padding是為了防止在進(jìn)度條加載完畢的時(shí)候文字繪制出現(xiàn)被切掉情況  Rect rect = new Rect();  textPaint.getTextBounds(str,0,str.length(),rect);  canvas.drawLine(0,height/2,value*((width-strWidth)/100),height/2,paint);//繪制進(jìn)度  canvas.drawText(value+"%",value*((width-strWidth)/100)+padding,(height-rect.height())/2+2*padding,textPaint);//繪制進(jìn)度文字 這個(gè)高度+2*padding是因?yàn)閐rawText是根據(jù)基線計(jì)算的,要準(zhǔn)確的話要去求基線  canvas.drawLine(value*((width-strWidth)/100)+strWidth+padding,height/2,width,height/2,dottePaint);//繪制灰色進(jìn)度表示剩余多少  postDelayed(new Runnable() {   @Override   public void run() {    if(value<100){     value++;     postInvalidate();    }   }  },100); }}

布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#7EC0EE"> <com.tuya.DownLoadProgressView  android:id="@+id/dpv"  android:layout_width="fill_parent"  android:layout_height="30dp"  android:layout_marginLeft="10dp"  android:layout_marginRight="10dp"  android:layout_marginTop="60dp"  ></com.tuya.DownLoadProgressView></RelativeLayout>

github:NumberProgress

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: a视频在线观看免费 | 欧美色图在线观看 | 91精品国产九九九久久久亚洲 | 亚洲午夜av| 最新日韩av网址 | 国产精品久久久久影院色老大 | 黄色三级视频 | 国产精品久久久久一区二区三区 | 欧美日韩一区视频 | 国产成人午夜精品影院游乐网 | 成人久久亚洲 | 精品久久久久久亚洲精品 | 久久成人毛片 | 色综久久| 日韩中文字幕视频在线观看 | 黄av网站 | 日韩欧美在线中文字幕 | 91精品国产综合久久久久久软件 | 日韩电影免费 | 久久精品久久久久 | aaa在线观看 | 国产精品久久久久久亚洲毛片 | 国产中文字幕一区二区三区 | 精品中文字幕一区二区 | 亚洲综合电影 | 黄色大片成人 | 亚洲最黄视频 | 欧美不卡在线 | 国产精品成人免费视频 | 中文字幕国产 | 国产精品一区免费观看 | 精品视频在线免费观看 | 韩国精品一区二区三区 | 亚洲精彩视频 | 国产亚洲精品美女久久久久久久久久 | 久久久成人精品视频 | 操皮视频 | 国产成人在线看 | 国产极品美女高潮抽搐免费网站 | 日韩欧美精品在线视频 | 尤物久久av一区二区三区亚洲 |