Android自定义圆形ProgressBar方向
Posted
技术标签:
【中文标题】Android自定义圆形ProgressBar方向【英文标题】:Android custom circular ProgressBar direction 【发布时间】:2017-12-06 15:33:45 【问题描述】:我有一个自定义的循环进度条。这是我必须确定的可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/secondaryProgress">
<shape
android:innerRadiusRatio="6"
android:shape="ring"
android:thicknessRatio="20.0"
android:useLevel="true">
<gradient
android:centerColor="#999999"
android:endColor="#999999"
android:startColor="#999999"
android:type="sweep" />
</shape>
</item>
<item android:id="@android:id/progress">
<rotate
android:fromDegrees="270"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="270">
<shape
android:innerRadiusRatio="6"
android:shape="ring"
android:thicknessRatio="20.0"
android:useLevel="true">
<rotate
android:fromDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="0" />
<gradient
android:centerColor="?attr/colorAccent"
android:endColor="?attr/colorAccent"
android:startColor="?attr/colorAccent"
android:type="sweep" />
</shape>
</rotate>
</item>
</layer-list>
我希望它以顺时针方向显示进度,但现在它显示逆时针方向。
如何更改?
【问题讨论】:
你是如何增加进度的?我有一个圆形进度条,使用你的drawable,它顺时针旋转 【参考方案1】:通过使用最新版本的material design library,您可以实现:
在具有此属性的布局中app:indicatorDirectionCircular
或以编程方式使用此方法
setIndicatorDirection()
更多信息请参考here。
【讨论】:
【参考方案2】:我猜你使用的是 rtl 语言?您可以通过在ProgressBar
上设置layoutDirection
属性来强制进度条为 ltr 或顺时针方向。
<ProgressBar
...
android:layoutDirection="ltr" />
【讨论】:
【参考方案3】:我不确定它是否会起作用,但请尝试像这样设置android:toDegrees="-360"
:
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="-360" />
【讨论】:
【参考方案4】:改变这个
<rotate
android:fromDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="0" />
到
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />
【讨论】:
不起作用。一开始是这样的,我试着改变它。以上是关于Android自定义圆形ProgressBar方向的主要内容,如果未能解决你的问题,请参考以下文章
Android踩坑日记:自定义水平和圆形ProgressBar样式