自定义View圆形进度条带跳转页面
来源:互联网 发布:oracle 数据备份 编辑:程序博客网 时间:2024/06/05 06:32
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); } }
自定义View:
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
- 自定义View圆形进度条带跳转页面
- 自定义圆形进度View
- 圆形进度环自定义View
- Android 自定义View——圆形进度
- 自定义View(带进度的圆形进度条)
- 自定义View,自定义属性(带进度的圆形进度条)
- Android自定义View-绘制扇形实现圆形进度
- 自定义view之仿慕课网课程学习圆形进度
- Android 自定义View -带进度的圆形进度条
- 自定义圆形进度控件
- 自定义View之继承View(圆形进度图,播放器条形图)
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- C++笔记记录Ⅳ 普通/static/const方法
- 小组讨论时的问题
- 将应用程序打包进openwrt固件,随着系统自启动
- 实验6:树和二叉树的实验2 二叉链表
- TensorFlow在训练模型时指定GPU进行训练
- 自定义View圆形进度条带跳转页面
- UVA
- vmware10新建redhat7系统操作教程
- Java阶段学习心得
- 关于fragment和activty的通信个人的总结浅谈
- 自定义view继承LinearLayout实现购物车数量的加减
- 数据库视频(七)
- 对于图的储存的总结(一)
- python开头两行code