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样式

自定义圆形ProgressBar遇到的问题

Android 三种方式实现自定义圆形进度条ProgressBar

如何给progressbar圆形进度条设置颜色

自定义progressBar的旋转圆圈

自定义圆形ProgressBar遇到的问题