学向勤中得,萤窗万卷书。这篇文章主要讲述android ProgressBar 进度条的进度两端是圆角的方法相关的知识,希望能为你提供帮助。
转自
http://www.jianshu.com/p/6e7ea842d5ce
另外工作原理可以参考http://blog.csdn.net/lan603168/article/details/44705425
ProgressBar 自定义的时候可能会遇到一个问题,希望进度条中的进度的两端都是圆角的(或者进度的末端是圆角的);
如下图:
文章图片
progress bar rounder但是根据自定义的shape 或者是 layer-list却总是很难做到,几乎都是被clip成了直角的样子;
文章图片
progress bar;
问题的原因就是如下链接中也会有相似的解答:
Android开发中Progress需要两边都是圆角怎么办?
为什么是直角的?原因就是被clip给切了,所以我们不能够用clip,而要使用scale这个标签。而上面链接给出的解答是定义一个.9的图片就能满足要求,由于我们这里是纯色的一个进度,所以没有必要通过再制作一个.9的图片,而只需要通过同样的方法引用我们定义的一个shape就可以了;
见代码:
<
ProgressBar
android:layout_below="@id/text_1"
android:layout_marginTop="16dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progressbar_1"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
android:progress="40"
android:progressDrawable="@drawable/progress_bar_drawable"/>
progressDrawable 引用的progress_bar_drawable:
<
?xml version="1.0" encoding="utf-8"?>
<
layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<
item android:id="@android:id/background">
<
shape>
<
cornersandroid:topRightRadius="20dp"
android:bottomRightRadius="20dp" />
<
solid android:color="#ED30353E"/>
<
/shape>
<
/item>
<
item android:id="@android:id/secondaryProgress">
<
scale android:scaleWidth="100%">
<
shape>
<
corners android:topRightRadius="20dp"
android:bottomRightRadius="20dp"/>
<
solid android:color="#11ce33"/>
<
/shape>
<
/scale>
<
/item>
<
item android:id="@android:id/progress">
<
!--
<
clip>
<
shape>
<
corners android:topRightRadius="20dp"
android:bottomRightRadius="20dp"/>
<
solid android:color="#FF009898"/>
<
/shape>
<
/clip>
-->
<
scale android:scaleWidth="100%"
android:drawable="@drawable/progress_bar_ct"/>
<
/item>
<
/layer-list>
重点就是这个:
<
scale android:scaleWidth="100%"
android:drawable="@drawable/progress_bar_ct"/>
指定了一个我们自定义的shape:progress_bar_ct.xml
<
?xml version="1.0" encoding="utf-8"?>
<
shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<
!-- solid指定形状的填充色,只有android:color一个属性 -->
<
solid android:color="#FF009898" />
<
!-- padding设置内容区域离边界的间距 -->
<
!-- corners设置圆角,只适用于rectangle -->
<
corners android:bottomRightRadius="20dp"
android:topRightRadius="20dp"/>
<
/shape>
这样就不需要自定义.9的图片了;
PS:由于本人的需求是右端才是圆角,如果需要4个角都是圆角只需要修改一点代码即可;
<
corners android:bottomRightRadius="20dp"
android:topRightRadius="20dp"/>
修改成:
<
corners android:radius="20dp" />
即可;
【android ProgressBar 进度条的进度两端是圆角的方法】
文/heybik(简书作者)
原文链接:http://www.jianshu.com/p/6e7ea842d5ce
著作权归作者所有,转载请联系作者获得授权,并标注“ 简书作者” 。
推荐阅读
- Android使用Application的好处
- Android之文件数据存储
- android 和h5互调步骤
- Android中实现多彩的霓虹灯
- 微课程--Android--Android概述
- 各大安卓应用市场APP上传提交与收录
- Android 使用Okhttp/Retrofit持久化cookie的简便方式
- Android M(6.0) 权限爬坑之旅
- 安卓开源项目周报1220