android自定义横向进度条,Android自定义进度条的圆角横向进度条实例详解

本文详细讲解了如何在Android中自定义一个圆角横向进度条,包括使用invalidate()方法刷新视图,应用rectf方法绘制圆角矩形,以及onmeasure方法设置控件大小。通过三层矩形实现进度条效果,并提供了示例代码。
摘要由CSDN通过智能技术生成

1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的:

invalidate()方法

rectf方法的应用

onmeasure方法的应用

2.原理

画3层圆角矩形,底层为黑色,第二层为灰色,最上一层为进度条颜色,示例图如下:

97f2a05714e9e9e061a83829175eacb1.png

3.效果图

c74fd63bf4c632a2cb3b3d93f31a23f1.png

实现圆角进度条还有很多其他方法,比如在progress控件里填充圆角图片,通过拉伸图片来达到预想的效果,虽然听起来很简单,但实现起来还是有些麻烦的。

4.解说方法

(1)invalidate()方法

invalidate()是用来刷新view的,必须是在ui线程中进行工作。比如在修改某个view的显示时, 调用invalidate()才能看到重新绘制的界面。invalidate()的调用是把之前的旧的view从主ui线程队列中pop掉。一般在自定义控件中会用到这个方法。

(2)rectf方法的应用

rectf是用来绘画矩形的方法。

rectf(left,top,right,bottom),四个参数的含义分别是父控件距离矩形左上右下边距的距离,以下用图来说明:

drawroundrect方法是用来绘制圆角矩形的,它的参数如下:

参数说明

rect:rectf对象。

rx:x方向上的圆角半径。

ry:y方向上的圆角半径。

paint:绘制时所使用的画笔。

(3)onmeasure方法

指定自定义控件在屏幕上的大小,onmeasure方法的两个参数是由上一层控件 传入的大小,而且是模式和尺寸混合在一起的数值,需要measurespec.getmode(widthmeasurespec) 得到模式,measurespec.getsize(widthmeasurespec)得到尺寸。

onmeasure的几种模式分别为exactly,at_most,unspecified。

[1]measurespec.exactly

measurespec.exactly是精确尺寸,当我们将控件的layout_width或layout_height指定为具体数值时如andorid:layout_width=”50dip”,或者为fill_parent是,都是控件大小已经确定的情况,都是精确尺寸。

[2]measurespec.at_most

measurespec.at_most是最大尺寸,当控件的layout_width或layout_height指定为wrap_content时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值