Android自定义圆形ProgressBar方向
Android custom circular ProgressBar direction
我有一个自定义的循环进度条。这是我要确定的可绘制对象:
<?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>
我想让它按顺时针方向显示进度,但现在逆时针显示。
如何更改?
改变这个
<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:toDegrees="-360"
:
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="-360" />
我猜你使用的是 rtl 语言?您可以通过在 ProgressBar
.
上设置 layoutDirection
属性 来强制进度条向 ltr 或顺时针方向移动
<ProgressBar
...
android:layoutDirection="ltr" />
通过使用最新版本的 material design library,您可以实现:
- 在具有此属性的布局中
app:indicatorDirectionCircular
- 或使用此方法以编程方式
setIndicatorDirection()
参考here了解更多信息。
我有一个自定义的循环进度条。这是我要确定的可绘制对象:
<?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>
我想让它按顺时针方向显示进度,但现在逆时针显示。
如何更改?
改变这个
<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:toDegrees="-360"
:
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="-360" />
我猜你使用的是 rtl 语言?您可以通过在 ProgressBar
.
layoutDirection
属性 来强制进度条向 ltr 或顺时针方向移动
<ProgressBar
...
android:layoutDirection="ltr" />
通过使用最新版本的 material design library,您可以实现:
- 在具有此属性的布局中
app:indicatorDirectionCircular
- 或使用此方法以编程方式
setIndicatorDirection()
参考here了解更多信息。