本文实例为大家分享了android实现节点进度条效果展示的具体代码,供大家参考,具体内容如
代码:
包utils.android.view.lxz; 进口java.util.ArrayList; 进口并不知道; 进口com.community.custom.android.R; 进口android.app.Activity; 进口android.content.Context; 进口android.graphics.Bitmap; 进口android.graphics.BitmapFactory; 进口android.graphics.Canvas; 进口android.graphics.Color; 进口android.graphics.Paint; 进口android.graphics.drawable.BitmapDrawable; 进口android.graphics.drawable.Drawable; 进口android.graphics.drawable.ShapeDrawable; 进口android.graphics.drawable.shapes.OvalShape; 进口android.util.AttributeSet; 进口android.util.DisplayMetrics; 进口android.util.Log; 进口android.view.View;/* * * 2015-1-24 *小林爱 * */公共类NodeProgressBar扩展视图实现Runnable { 私人浮动dn=1 f; DisplayMetrics指标; { 指标=new DisplayMetrics (); ((活动)getContext ()) .getWindowManager () .getDefaultDisplay () .getMetrics(指标); dn=1 * 3/metrics.density; }/* *读取空进度条图片*/私人BitmapDrawable db_empty;/* *视图宽度*/私人int viewWidth;/* *视图高度*/私人int viewHeight;/* * *白色空心圆图片集合 * */私人Listlist_whitecircle;/* * *蓝色实心圆图片集合 * */私人List list_bluecircle;/* *蓝色进度条*/私人BitmapDrawable db_blue;/* *进度比值控制蓝色进度条*/私人双率=0;/* *节点名称*/私人String [] textArr=new String[]{”等待服务”,“服务中”,“等待评价”,“成功"};/* *节点数*/私人int数=textArr.length;;/* *当前节点进度*/私人int指数=0;/* * X轴对称偏移值*/私人int offX=(int) (50/dn);/* * Y轴偏移值*/私人int offY=(int) (70/dn);/* *文字与节点偏移值*/私人int offTextY=(int) (65/dn);/* *白色空心圆偏移值*/私人int offWhiteCirle_y=(int) (3/dn);/* *白色空心进度条偏移值*/私人int offWhiteRect_y=(int) (2/dn);/* *白色空心进度条偏移值*/私人BitmapDrawable db_blue_half_circle;/* *创建一只新画笔*/私人涂漆=new ();/* *白色空心圆半径*/私人int r_white=(int) (76/dn);/* *蓝色空心圆半径*/私人int r_blue=(int) (56/dn);/* *白色进度条高度*/私人int whiteProgressHeight=(int) (30/dn);/* *蓝色进度条高度*/私人int blueProgressHeight=(int) (16/dn);/* *文本颜色j */私人字符串输入textColor=" # 46 a3ff”;/* *文本未激活颜色*/私人字符串textColorNotEnabled=" # 7 e7e81”;///* *视图背景颜色*///私人字符串背景=" # e0000000”;/* *文本框大小*/私人int textSize=(int) (32/dn);/* *白色空心进度条宽度*/私人int maxProgressWidth;/* *半圆蓝色进度条宽度*/私人int half_blueWidth=(int) (12/dn); 公共String [] getTextArr () { 返回textArr; } 公共空间setTextArr (String [] textArr) { 这一点。textArr=textArr; 数=textArr.length;; init (); 这一点。邮报》(新Runnable () { @Override 公共空间run () {//读取视图宽度 viewWidth=NodeProgressBar.this.getWidth ();//读取视图高度 viewHeight=NodeProgressBar.this.getHeight ();//进度条宽度计算 maxProgressWidth=viewWidth - r_white-offX * 2;//绘制 无效(); } }); } @SuppressWarnings(弃用) 公共NodeProgressBar(上下文语境){ 超级(上下文); init (); } 公共NodeProgressBar(上下文语境,AttributeSet attrs) { 超级(上下文,attrs); init (); }/* *控制蓝色进度条*/公共空间setProgressOnly (int i) { 比率=i/100 d; 无效(); }/* *以节点数来空值进度条至少大于1 */公共空间setProgressByNode(最终双d) { 这一点。邮报》(新Runnable () { @Override 公共空间run () {//TODO自动生成方法存根 int进展; 如果(d==1) { 进步=1; 其他} { 进步=(int) ((100 d/(d)(把1)* 1.0)* (d 1)); } setProgressAndIndex(进步); } }); }/* *控制蓝色进度条并且对节点染色*/公共空间setProgressAndIndex (int i) { 如果(i==0) { 指数=0; 比率=0; 无效(); 返回; }//获得相对进度条长度 (int adbProgress=maxProgressWidth) -把1 * r_white;//得到每一个节点所需进度值 int k=100/(把1);//计算当前进度需要染色的节点个数 指数=1 + i/k; 如果(指数!=数) {//获得节点磁力比率 双wh d=1.0 * (r_white/2)/(双)maxProgressWidth;//计算蓝色进度条和染色节点宽度 率=我% 100==0 & # 63;率=1:wh + wh * 2 *(索引1)+ 1.0 d *((双)adbProgress/(双)maxProgressWidth) * 100 (i/d); 其他} {//设置进度条为满 率=1; } 无效(); }/* * *初始化图片资源,和基础数的值 * */@SuppressWarnings(弃用) 私人空间init () { 指标=new DisplayMetrics (); ((活动)getContext ()) .getWindowManager () .getDefaultDisplay () .getMetrics(指标); 日志。d (“lxz””、“+ metrics.density); dn=1 * 3/metrics.density; list_whitecircle=new ArrayList android实现节点进度条效果