代码之家  ›  专栏  ›  技术社区  ›  Manuel

如何重新创建进度条旋转?

  •  1
  • Manuel  · 技术社区  · 5 年前

    我怎样才能重现一个物体的旋转呢 ProgressBar progressBarStyleLarge ?

    <androidx.core.widget.ContentLoadingProgressBar
        android:id="@+id/loadingIndicator"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:indeterminateDrawable="@drawable/loadingindicator"
        style="?android:attr/progressBarStyleLarge" />
    

    可拉伸的 loadingindicator :

    <?xml version="1.0" encoding="utf-8"?>
    <rotate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="0"
        android:toDegrees="360" >
    
        <shape
            android:innerRadiusRatio="3"
            android:shape="ring"
            android:thicknessRatio="40"
            android:useLevel="false" >
    
            <size
                android:height="48dip"
                android:width="48dip" />
    
            <gradient
                android:startColor="#ff00ff"
                android:centerColor="#ff00ff"
                android:endColor="#ffffff"
                android:centerY="0.50"
                android:type="sweep"
                android:useLevel="false" />
        </shape>
    
    </rotate>
    

    但这会导致平滑的恒定旋转,而不是使用默认样式显示的-我相信-2个平行旋转。

    特别是我想重现 Indeterminate circular progress indicator https://material.io/components/progress-indicators/#circular-progress-indicators

    问题披露: 我需要这个,因为我想自定义笔划厚度和ProgressBar的外缘。

    0 回复  |  直到 5 年前
        1
  •  1
  •   patrick.elmquist    5 年前

    你可以用 CircularProgressDrawable 代码如下:

    val drawable = CircularProgressDrawable(context).apply {
        strokeWidth = // desired width in pixels
    }
    progressBar.indeterminateDrawable = drawable
    

    https://developer.android.com/reference/android/support/v4/widget/CircularProgressDrawable