如何定义圆形进度条的渐变

dev*_*v90 7 android android-layout android-progressbar android-constraintlayout

我在布局中添加了一个进度条,如下所示,我还为其添加了颜色,并且效果很好。

 <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:indeterminate="true"
        android:indeterminateTintMode="src_atop"
        android:indeterminateTint="@color/color"
        android:layout_gravity="center_vertical|center_horizontal"
        android:visibility="visible"
 />
Run Code Online (Sandbox Code Playgroud)

但我需要在上面添加渐变颜色。我在颜色文件夹中添加了渐变,如下所示。

<gradient android:type="linear"
    android:angle="0"
    android:startColor="#dc0336"
    android:endColor="#ff7f00"
    xmlns:android="http://schemas.android.com/apk/res/android" />
Run Code Online (Sandbox Code Playgroud)

然后我将这个颜色分配给Progressbar

 android:indeterminateTint="@color/gradientColor"
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我需要知道一种方法来添加渐变progressBar

Yaq*_*tti 5

这是一个迟到的答案,但我认为这会对其他人有所帮助。只需尝试遵循代码即可。

可绘制/加载进度条

<?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:toDegrees="1440">
    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="10"
        android:useLevel="false">
        <size
            android:width="60dp"
            android:height="60dp" />

        <gradient
            android:centerColor="#b43787"
            android:centerY="0.50"
            android:endColor="#7036a3"
            android:startColor="#f0376f"
            android:type="sweep"
            android:useLevel="false" />
    </shape>

</rotate>
Run Code Online (Sandbox Code Playgroud)

活动主文件

<ProgressBar
        android:id="@+id/loading_progress"
        android:layout_width="130dp"
        android:layout_height="130dp"
        android:indeterminateDrawable="@drawable/loading_progressbar"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        />
Run Code Online (Sandbox Code Playgroud)

结果

结果


Bad*_*ane 2

您应该使用android:progressDrawable而不是android:indeterminateTint.

您的代码应如下所示:

 <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:indeterminate="true"
        android:indeterminateTintMode="src_atop"
        android:progressDrawable="@drawable/gradientDrawable"
        android:layout_gravity="center_vertical|center_horizontal"
        android:visibility="visible"
 />
Run Code Online (Sandbox Code Playgroud)

使用以下内容作为渐变 Drawable。将文件命名为gradientDrawable.xml并将其放置在drawable目录下。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadiusRatio="3.5"
    android:shape="ring"
    android:thickness="2.5dp"
    android:useLevel="false">
    <gradient
        android:angle="0"
        android:endColor="#ff7f00"
        android:startColor="#dc0336"
        android:type="linear" />
</shape>
Run Code Online (Sandbox Code Playgroud)

我测试了你的渐变,它看起来像这样:

在此输入图像描述