ProgressBar 自定义的时候可能会遇到一个问题,希望进度条中的进度的两端都是圆角的(或者进度的末端是圆角的);
如下图:
progress bar rounder
但是根据自定义的shape 或者是 layer-list却总是很难做到,几乎都是被clip成了直角的样子;
progress bar
;
为什么是直角的?原因就是被clip给切了,所以我们不能够用clip,而要使用scale这个标签。而上面链接给出的解答是定义一个.9的图片就能满足要求,由于我们这里是纯色的一个进度,所以没有必要通过再制作一个.9的图片,而只需要通过同样的方法引用我们定义的一个shape就可以了;
见代码:
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:
android:bottomRightRadius="20dp" />
android:bottomRightRadius="20dp"/>
android:drawable="@drawable/progress_bar_ct" />
重点就是这个:
android:drawable="@drawable/progress_bar_ct" />
指定了一个我们自定义的shape:progress_bar_ct.xml
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
android:topRightRadius="20dp"/>
这样就不需要自定义.9的图片了;
PS:由于本人的需求是右端才是圆角,如果需要4个角都是圆角只需要修改一点代码即可;
android:topRightRadius="20dp"/> ```
修改成:
即可;