android 自定义View简单的ProgressView圆形进度条
来源:互联网 发布:天下3鬼墨女捏脸数据 编辑:程序博客网 时间:2024/05/16 08:58
MainActivity
public class MainActivity extends AppCompatActivity { private Button btnAdd; private ProgressView pv; private static final int FLAG = 0x123; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case FLAG: int progress = pv.getProgress(); progress += 10; if (progress > 100) { progress = 0; } pv.setProgress(progress); handler.sendEmptyMessageDelayed(FLAG, 1000); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnAdd = (Button) findViewById(R.id.btn_add); pv = (ProgressView) findViewById(R.id.pv_data); btnAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {// int progress = pv.getProgress();// progress += 30;// pv.setProgress(progress); handler.sendEmptyMessageDelayed(FLAG, 1000); } }); pv.setListener(new ProgressView.ProgressUpdateListener(){ @Override public void onProgressUpdated(int progress) { if (progress >= 100) {// handler.remove; startActivity(new Intent(MainActivity.this, ScanActivity.class)); } } }); } @Override protected void onStop() { super.onStop(); handler.removeMessages(FLAG); }}
ProgressView
public class ProgressView extends View { private ProgressUpdateListener listener; interface ProgressUpdateListener { void onProgressUpdated(int progress); } public void setListener(ProgressUpdateListener listener) { this.listener = listener; } private int progress = 0; public ProgressView(Context context) { super(context); } public ProgressView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public ProgressView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public int getProgress() { return progress; } public void setProgress(int progress) { this.progress = progress; postInvalidate(); if (listener != null) { listener.onProgressUpdated(progress); } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int width = getWidth(); int height = getHeight(); // 绘图范围 int react = Math.min(width, height); // 半径 int radius = react / 2; // 绘制最外层的大圆 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.GREEN); paint.setStyle(Paint.Style.STROKE); canvas.drawCircle(radius, radius, radius, paint); paint.reset(); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(20); paint.setColor(Color.RED); // 画扇形 canvas.drawArc(10, 10, react-10, react-10, -90, progress*360/100, true, paint); // 画内层的小圆 paint.reset(); paint.setColor(Color.WHITE); paint.setStyle(Paint.Style.FILL_AND_STROKE); canvas.drawCircle(radius, radius, radius - 20, paint); // 画进度文字 paint.reset(); paint.setColor(Color.BLUE); paint.setTextSize(40); Rect rect = new Rect(); paint.getTextBounds(progress + "", 0, String.valueOf(progress).length(), rect); int textWidth = rect.width(); int textHeight = rect.height(); canvas.drawText(progress + "", radius-textWidth/2, radius-textHeight/2, paint); }}
阅读全文
0 0
- android 自定义View简单的ProgressView圆形进度条
- android 圆形进度条 自定义view
- android 自定义view 圆形进度条
- Android自定义View---圆形进度条
- Android-------自定义View圆形进度条
- Android自定义view(圆形进度条)
- Android自定义view圆形进度条
- Android自定义view圆形进度条
- Android自定义View-圆形进度条
- 自定义View之简单自定义圆形进度条
- 一个简单的自定义View,仿圆形进度条
- 简单实现自定义View控件圆形进度条
- Android 自定义带数字的圆形进度条和中间是文字的圆形进度条View
- Android:自定义View实现绚丽的圆形进度条
- Android 自定义View -带进度的圆形进度条
- android 自定义View 稍微好看一点的圆形进度条
- 自定义View实现Android圆形进度条
- Android 自定义view --圆形百分比(进度条)
- 深入剖析串口通信数据格式
- 控件操作类
- 一起来学习Mybatis(一)-入门
- display:inline-block,block,inline的区别与用法
- 软工视频总结
- android 自定义View简单的ProgressView圆形进度条
- 如何判断Linux是32位还是64位
- 【opencv3】 Mat类用法总结
- 百度地图之添加覆盖物
- P2939 [USACO09FEB]改造路Revamping Trails(迪杰斯特拉+堆优化)
- activity显隐跳转及值传递
- 编译原理第一次作业
- 记录FastDFS+Nginx 安装与配置过程
- Spark源码解读--任务生成和提交过程