怎么在android中通过自定义观点实现一个数字进度条

  介绍

怎么在android中通过自定义观点实现一个数字进度条?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

android是什么

android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国谷歌公司和开放手机联盟领导及开发。

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;   public  class  DownLoadProgressView  extends  View  {   ,private  Paint 颜料;//绘制进度条画笔   ,private  Paint  textPaint;//绘制文字画笔   ,private  Paint  dottePaint;//绘制灰色线画笔   ,private  int 宽度;   ,private  int 高度;   ,private  int  padding =5;   ,private  int  value =, 0;   ,public  DownLoadProgressView (Context 上下文),{   这才能(上下文,null);   ,}   ,public  DownLoadProgressView (Context 上下文,AttributeSet  attrs), {   这才能(上下文,attrs 0);   ,}   ,public  DownLoadProgressView (Context 上下文,AttributeSet  attrs,, int  defStyleAttr), {   超级才能(上下文,attrs,, defStyleAttr);   initPaint才能();   ,}   ,@Override   ,protected  void  onSizeChanged (int  w, int  h, int  oldw,, int  oldh), {   super.onSizeChanged才能(h, w,还以为,oldw, oldh);   时间=width 才能;w;   时间=height 才能;h;   ,}/* *   *,才能初始化画笔   ,*/,private  void  initPaint (), {   paint 才能=,new 油漆();   paint.setAntiAlias才能(真正的);   paint.setStrokeWidth才能(2);   paint.setStyle才能(Paint.Style.FILL);   paint.setColor才能(Color.BLUE);      textPaint 才能=,new 油漆();   textPaint.setAntiAlias才能(真正的);   textPaint.setStrokeWidth才能(3);   textPaint.setStyle才能(Paint.Style.FILL);   textPaint.setColor才能(Color.BLUE);   textPaint.setTextSize才能(12);      dottePaint 才能=,new 油漆();   dottePaint.setAntiAlias才能(真正的);   dottePaint.setStrokeWidth才能(2);   dottePaint.setStyle才能(Paint.Style.FILL);   dottePaint.setColor才能(Color.parseColor (“# e5e5e5"));   ,}   ,@Override   ,protected  void  onDraw (Canvas 画布),{   super.onDraw才能(画布);   String 才能;str =,价值+“%”;   float 才能;strWidth =, textPaint.measureText(价值+“%”)+填充;//绘制文字的宽度,+填充是为了防止在进度条加载完毕的时候文字绘制出现被切掉情况   Rect 才能;Rect =, new 矩形();   textPaint.getTextBounds才能(str 0 str.length(),矩形);   canvas.drawLine才能(0,身高/2,价值* ((width-strWidth)/100),身高/2、油漆);//绘制进度   canvas.drawText才能(价值+“%”,价值* ((width-strWidth)/100) +填充(height-rect.height())/2 + 2 *填充、textPaint);//绘制进度文字,这个高度+ 2 *填充是因为drawText是根据基线计算的,要准确的话要去求基线   canvas.drawLine才能(价值* ((width-strWidth)/100) + strWidth +填充、高度/2,宽度、高度/2,dottePaint);//绘制灰色进度表示剩余多少   postDelayed才能(new  Runnable (), {   @Override。才能   ,,public  void 运行(),{   ,,,如果(value<100) {   ,,,,值+ +;   ,,,,postInvalidate ();   ,,,}   ,,}   ,,},100);   ,}   }

布局文件:

& lt; ? xml  version=?.0“,编码=皍tf-8" ?比;   & lt; RelativeLayout  xmlns: android=癶ttp://schemas.android.com/apk/res/android"   ,android:取向=皏ertical"   ,android: layout_width=癿atch_parent"   ,android: layout_height=癿atch_parent"   ,android:背景=? 7 ec0ee"比;   & lt; com.tuya.DownLoadProgressView   android:才能id=癅 + id/dpv"   android:才能layout_width=癴ill_parent"   android:才能layout_height=?0 dp"   android:才能layout_marginLeft=?0 dp"   android:才能layout_marginRight=?0 dp"   android:才能layout_marginTop=?0 dp"   祝辞才能& lt;/com.tuya.DownLoadProgressView>   & lt;/RelativeLayout>

怎么在android中通过自定义观点实现一个数字进度条