介绍
怎么在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中通过自定义观点实现一个数字进度条