300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android绘制环形进度_Android动态自定义圆形进度条

android绘制环形进度_Android动态自定义圆形进度条

时间:2019-02-25 01:21:50

相关推荐

android绘制环形进度_Android动态自定义圆形进度条

这篇文章主要介绍了Android动态自定义圆形进度条,需要的朋友可以参考下

效果图:

A.绘制圆环,圆弧,文本

//1.画圆环

//原点坐标

float circleX = width / 2;

float circleY = width / 2;

//半径

float radius = width / 2 - roundWidth / 2;

//设置画笔的属性

paint.setColor(roundColor);

paint.setStrokeWidth(roundWidth);

paint.setStyle(Paint.Style.STROKE);

canvas.drawCircle(circleX, circleY, radius, paint);

//2.画圆弧

RectF oval = new RectF(roundWidth/2,roundWidth/2,width-roundWidth/2,width - roundWidth/2);

paint.setColor(roundProgressColor);

canvas.drawArc(oval, 0, progress * 360 / max, false, paint);

//3.画文本

paint.setTextSize(textSize);

paint.setColor(textColor);

paint.setStrokeWidth(0);

String text = progress * 100 / max + "%";

Rect bounds = new Rect();

paint.getTextBounds(text, 0, text.length(), bounds);

canvas.drawText(text, width / 2 - bounds.width() / 2, width / 2 + bounds.height() / 2, paint);

B.自定义属性的具体步骤

具体步骤:

1. 定义属性: 在values目录下创建attrs.xml

2. 在布局文件中引用当前应用的名称空间

3. 在自定义视图标签中使用自定义属性

android:id="@+id/rp_home_progress"

android:layout_width="120dp"

android:layout_height="120dp"

android:layout_gravity="center_horizontal"

android:layout_marginTop="20dp"

atguigu:roundColor="@android:color/darker_gray

atguigu:roundProgressColor="@android:color/holo_red_dark"

atguigu:textColor="@color/text_progress"

atguigu:roundWidth="10dp"

atguigu:textSize="20sp"

/>

4. 在自定义View类的构造方法中, 取出布局中的自定义属性值

//1.得到所有自定义属性的数组

TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoundProgress);

//2.获取自定义属性的值, 如果没有指定取默认值

roundColor = typedArray.getColor(R.styleable.RoundProgress_roundColor, Color.RED);

roundProgressColor = typedArray.getColor(R.styleable.RoundProgress_roundProgressColor, Color.GREEN);

textColor = typedArray.getColor(R.styleable.RoundProgress_textColor, Color.GREEN);

roundWidth = typedArray.getDimension(R.styleable.RoundProgress_roundWidth, UIUtils.dp2px(10));

textSize = typedArray.getDimension(R.styleable.RoundProgress_textSize, UIUtils.dp2px(20));

//3.释放资源数据

typedArray.recycle();

C.让圆环进度"动起来"

1.自定义RoundProgress类中提供进度属性的getter和setter方法

2.在HomeFragment的onSuccess()中:

以上所述是小编给大家介绍的Android动态自定义圆形进度条,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。