android 自定义圆形进度条(一)

本文介绍了如何在Android中实现一个自定义的圆形进度条,通过分析动态效果的实现原理,利用Canvas的drawArc()方法和正方形内切圆的概念,详细阐述了绘制过程。文章包括设置正方形、计算弧度、调整进度等关键步骤,并提供了相关XML代码和布局文件作为示例。
摘要由CSDN通过智能技术生成

现在app越来越要求界面很炫,比如一个加载数据的时候,通常是一个进度条在一直转,直到从服务器上获取到数据,进度条才消失,而大部分都不会使用android自带的进度条,因为不美,比如下面的进度条咋样:


其实这个蓝色背景是跟着进度条的进度颜色会发生改变,因为没有找到哪种动态类似gif动画,如果有那个给你,一眼就知道是动态的,虽然不是说非常漂亮,但至少比我们android自带的要美观很多,今天就讲讲这个是怎么实现的,当然了实现重要的是分析,没有一个逻辑的分析,以后遇到类似的还是不会,现在就分析下我是怎么实现的过程:

1:因为是动态的,相当于一个圆的弧度在变小,另外一个圆的弧度在变大,而且是相反方向的,既然说是二个弧度,我们知道在Canvas给我们提供了一个方法drawArc(),因此前面必须有个正方形或者长方形,但是我们这是圆形的进度条,因此需要一个正方形,而圆就是该正方形的内切圆,怎么画出这个正方形呢,很简单,只要知道左上角和右下角2个坐标点即可!

如图:


左上角的点我们可以设置为(0,0).而右下角左边,其实就是getWidth(),getHeight(),因为可以在布局问题中设置了高度和宽度以后就会获取这个控件的宽和高,所以这个正方形就出来了,

2:上面分析了为什么要使用正方形,那么有了这个条件还远不足以让我们实现这个功能,我们知道画弧.是需要你在那开始画,也就是其实点,然后要画多少的弧,那么又给我们带了2个问题,

a:其实弧度,这个很好理解,下面一张图就可以说明问题:


b:其实弧度该怎么算,这个确实有点难,但是你要想有什么已知条件,结合这个已知条件是不是可以获取这个值呢?比如这个控件的高度其实就是圆的直径,当每添加了一个进度,蓝色的背景就会覆盖多点位置,比如这个进度的最大值为100,你移动了1px,那么相当于你在下面往上面移动的高度为1/100*getHeight(),继续画图理解:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值