Andorid 自定义ProgressBar控件
来源:互联网 发布:软件开发设计方案 编辑:程序博客网 时间:2024/06/05 04:13
很简单,首先加载Drawable,在onMeasure设置好其区域大小,
然后使用canvas.clipRect绘图
public class ProgressView extends ImageView { private Drawable maskDraw; /** * 加载的进度 0-100 */ private int mProcess = 20; public ProgressView(Context context, AttributeSet attrs) { super(context, attrs); maskDraw = context.getResources().getDrawable(R.drawable.red_bg); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 保存当前画笔的状态 canvas.save(); int topline = (int) (getHeight() - getHeight() * getProcess() / 100); /* * canvas 剪切出一个区域,使在这个区域里面的内容是有效的,区域之外是无效的。 */ canvas.clipRect(0, topline, getWidth(), getHeight()); maskDraw.draw(canvas); // 恢复到之前保存的状态 canvas.restore(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); maskDraw.setBounds(0, 0, getWidth(), getHeight()); } public float getProcess() { return mProcess; } /** * 设置新的进度以后,自动刷新 */ public void setProgress(int mProcess) { if (mProcess > 100) { this.mProcess = 100; } if (mProcess < 0) { this.mProcess = 0; } this.mProcess = mProcess; invalidate(); }}
使用方法
public class ProgressActivity extends Activity { private ProgressView piv; private int pivDeep = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_progressview); piv = (ProgressView) findViewById(R.id.my_pro_iv); handler.sendEmptyMessage(2); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: piv.setProgress(pivDeep); break; case 2: new Thread() { public void run() { while (true) { pivDeep = (pivDeep + 5) % 100; handler.sendEmptyMessage(1); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } }; }.start(); break; default: break; } } };}
0 0
- Andorid 自定义ProgressBar控件
- Andorid自定义圆形progressBar半径大小
- 自定义控件之-----progressBar
- 自定义控件之-----progressBar
- 自定义控件之-----progressBar
- 自定义控件之ProgressBar
- 自定义progressbar控件
- 【android自定义控件】ProgressBar自定义
- Andorid Map布局 可添加自定义控件
- Andorid制作内含控件的自定义布局
- Android自定义view之下载控件,ProgressBar
- Android自定义控件---继承ProgressBar功能扩展
- Andorid控件
- ProgressBar控件
- ProgressBar控件
- 自定义progressbar
- 自定义ProgressBar
- 自定义Progressbar
- windos下JAVA 安装及环境变量配置
- 如何在监听器中获取spring容器
- Linux下搭建SVN服务器
- HDU - 2037 今年暑假不AC(结构体排序)
- Android开发之殇
- Andorid 自定义ProgressBar控件
- OnTouchListener的使用
- Sumsets
- 通俗易懂的机器学习
- STM32_SysTick
- 浦东街镇医保卡制卡网点地址电话
- Jquery autocomplete插件的使用示例
- mysql max函数不能用在where条件中的案例
- scikit-learn学习之K最近邻算法(KNN)