Android 自定义ProgressBar横向圆角

本文介绍了如何在Android项目中创建一个带有圆角的横向ProgressBar。在尝试使用自定义shape和layer-list时遇到问题,发现 corners 被裁剪成直角。通过不使用clip,而是利用scale标签,并结合网上的解决方案,成功实现了预期效果。文章提供了一个XML示例,展示了如何定义shape以达到圆角进度条的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ProgressBar大家可能项目中都会用到,但是大部分都是根据UI给的符合项目主题的自定义形式的;

下面就是我们项目中一个显示学习进度的横向ProgressBar;

可以看到四个角都是圆角的,本人首先想到的是自定义,但是会发现四个角总是不能够实现,要不左侧会被切成直角,要不进度内侧会被切成直角,也是从网上查找分析,最终实现如下:

结合网上大神的示意,在此作个笔记,方便之后遇到直接拿来用,节省时间.

借鉴ProgressBar 进度条的进度两端是圆角的方法

但是根据自定义的shape 或者是 layer-list却总是很难做到,几乎都是被clip成了直角的样子如上;

为什么是直角的?原因就是被clip给切了,所以我们不能够用clip,而要使用scale这个标签。而上面链接给出的解答是定义一个.9的图片就能满足要求,由于我们这里是纯色的一个进度,所以没有必要通过再制作一个.9的图片,而只需要通过同样的方法引用我们定义的一个shape就可以了;

好了,先上图(自动忽略边框,实际是没有)

xml

<ProgressBar
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值