自定义view 做一个圆形的progress
来源:互联网 发布:北大燕京学堂知乎 编辑:程序博客网 时间:2024/05/18 01:18
public class CustomProgrssView extends View {
//定义一个画笔
private Paint paint ;
private boolean runing = true ;
private int progress = 0 ;
public CustomProgrssView(Context context) {
super(context);
}
public CustomProgrssView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//创建一个画笔
paint = new Paint();
// 抗锯齿
paint.setAntiAlias(true);
//设置画笔的颜色
paint.setColor(Color.RED);
//设置画笔 填充是空心的
paint.setStyle(Paint.Style.STROKE);
new Thread(new Runnable() {
@Override
public void run() {
while (runing){
if(progress >= 360){
runing = false;
return;
}
System.out.println("progress = " + progress);
progress += 10 ;
//子线程刷新 系统调用onDraw() 方法
postInvalidate();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
float sweep ;
public CustomProgrssView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// getWidth() 获取当前View 的宽度
int x = getWidth() / 2 ;
int y = getHeight() / 2 ;
int radius = 200 ;
//设置画笔的粗细
paint.setStrokeWidth(30);
//定义一个区域
RectF rectF = new RectF(x-radius,y-radius,x+radius,y+radius);
//画弧
// useCentor true 从中心点开始画 false 中心点不现实
canvas.drawArc(rectF,-90,progress,false,paint);
int text = (int) ((float)progress / 360 * 100 );
// measureText 测量字符串的宽度
float textWidth = paint.measureText(text+"%");
Rect rextText = new Rect();
// rextText.height() 获取字符串的高度
paint.getTextBounds(text+"%",0,(text+"%").length(),rextText);
paint.setTextSize(30);
paint.setStrokeWidth(1);
//画文字
canvas.drawText(text+"%",x-textWidth/2,y+rextText.height()/2,paint);
}
}
//定义一个画笔
private Paint paint ;
private boolean runing = true ;
private int progress = 0 ;
public CustomProgrssView(Context context) {
super(context);
}
public CustomProgrssView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//创建一个画笔
paint = new Paint();
// 抗锯齿
paint.setAntiAlias(true);
//设置画笔的颜色
paint.setColor(Color.RED);
//设置画笔 填充是空心的
paint.setStyle(Paint.Style.STROKE);
new Thread(new Runnable() {
@Override
public void run() {
while (runing){
if(progress >= 360){
runing = false;
return;
}
System.out.println("progress = " + progress);
progress += 10 ;
//子线程刷新 系统调用onDraw() 方法
postInvalidate();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
float sweep ;
public CustomProgrssView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// getWidth() 获取当前View 的宽度
int x = getWidth() / 2 ;
int y = getHeight() / 2 ;
int radius = 200 ;
//设置画笔的粗细
paint.setStrokeWidth(30);
//定义一个区域
RectF rectF = new RectF(x-radius,y-radius,x+radius,y+radius);
//画弧
// useCentor true 从中心点开始画 false 中心点不现实
canvas.drawArc(rectF,-90,progress,false,paint);
int text = (int) ((float)progress / 360 * 100 );
// measureText 测量字符串的宽度
float textWidth = paint.measureText(text+"%");
Rect rextText = new Rect();
// rextText.height() 获取字符串的高度
paint.getTextBounds(text+"%",0,(text+"%").length(),rextText);
paint.setTextSize(30);
paint.setStrokeWidth(1);
//画文字
canvas.drawText(text+"%",x-textWidth/2,y+rextText.height()/2,paint);
}
}
阅读全文
0 0
- 自定义view 做一个圆形的progress
- 一个比较牛逼好用的圆形progress进度
- 一个简单的自定义View,仿圆形进度条
- 自定义View做的一个Clock案例
- 自定义View做的一个Clock案例
- 自定义view 自定义进度条 progress
- 自定义view自定义一个带箭头的圆形详解 加速 减速 变颜色
- 一个自定义的圆形进度条
- android_studio的自定义View的圆形进度条
- 自定义可圆形移动的view
- 自定义View(带进度的圆形进度条)
- 圆形图片的实现自定义view
- 自定义View,圆形图框
- 自定义View圆形进度条
- 自定义圆形进度View
- 自定义View--圆形ImageView
- 自定义view圆形进度条。
- 自定义View圆形进度条
- 我的Qt学习之路——配置Qt环境及Qt程序打包
- 198. House Robber (dp)
- Android自定义view圆形进度条
- 我的读书技巧
- 阿拉伯数字转中文数字
- 自定义view 做一个圆形的progress
- 图像识别与处理之Opencv——基本数据结构及示例
- AttributeError: 'dict' object has no attribute 'has_key'
- JVM的内存区域划分
- 2011NOIP普级组第二题--统计单词数
- redis集群搭建过程中踩过的几个坑
- thinkphp修改某字段
- 数据结构—绪论
- vue项目对接pad端——混合开发总结