android实现节点进度条效果

  

本文实例为大家分享了android实现节点进度条效果展示的具体代码,供大家参考,具体内容如

  

 android实现节点进度条效果

  

 android实现节点进度条效果

  

 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;/* *   *蓝色实心圆图片集合   * */私人Listlist_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实现节点进度条效果