【问题标题】:How to add round corners to a Circular Progress Bar in Android?如何在 Android 中为圆形进度条添加圆角?
【发布时间】:2021-10-31 23:37:06
【问题描述】:

您好,我正在尝试设计一个圆形栏进度组件。我已经做到了,但我无法设计圆角。

目前我有这个:

Example 1

这是我正在使用的代码:

custom_progress_drwawable.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            android:shape="ring"
            android:thicknessRatio="16"
            android:useLevel="false"
            android:thickness="10dp">
            <solid android:color="@color/base_dark" />
        </shape>
    </item>
    <item>
        <rotate
            android:fromDegrees="270"
            android:toDegrees="270">
            <shape
                android:shape="ring"
                android:thicknessRatio="16"
                android:useLevel="true"
                android:thickness="10dp">
                <gradient
                    android:endColor="@color/secundary_10"
                    android:type="radial"/>
            </shape>
        </rotate>
    </item>
</layer-list>

圆形进度条

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="center">

    <ProgressBar
        android:id="@+id/progress_bar"
        style="@style/CircularDeterminateProgressBar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:progress="100"/>

    <TextView
        android:id="@+id/text_view_progress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:textSize="12sp"
        app:textColor="@color/blue_dark"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        app:layout_constraintBottom_toBottomOf="@+id/progress_bar"
        app:layout_constraintEnd_toEndOf="@+id/progress_bar"
        app:layout_constraintStart_toStartOf="@+id/progress_bar"
        app:layout_constraintTop_toTopOf="@+id/progress_bar"
        tools:text="60%" />

</androidx.constraintlayout.widget.ConstraintLayout>

我想得到的是这个(相同但有圆角条):

Example 2

【问题讨论】:

    标签: android layout progress-bar


    【解决方案1】:

    您可以使用Material CircularProgressIndicator 来实现此目的,方法是设置app:trackCornerRadius 以更改轨道角半径。

    1.首先获取最新的 Material Design Library 并将其添加到您的应用依赖项中 (implementation 'com.google.android.material:material:1.4.0')

    2.在您的 xml 布局中使用com.google.android.material.progressindicator.CircularProgressIndicator,如下所示:

    <com.google.android.material.progressindicator.CircularProgressIndicator
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:progress="25"
        app:trackCornerRadius="5dp"
        app:indicatorSize="90dp"
        app:trackThickness="7dp"
        app:trackColor="@android:color/darker_gray"
        app:indicatorColor="@android:color/black"
        app:indicatorDirectionCircular="clockwise"
        app:indicatorInset="5dp"/>
    

    根据您的布局,将ProgressBar 替换为CircularProgressIndicator,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="center">
    
        <com.google.android.material.progressindicator.CircularProgressIndicator
            android:id="@+id/progress_bar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:progress="25"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:indicatorSize="90dp"
            app:trackCornerRadius="5dp"
            app:trackThickness="7dp"
            app:trackColor="@android:color/darker_gray"
            app:indicatorColor="@android:color/black"
            app:indicatorDirectionCircular="clockwise"
            app:indicatorInset="5dp"
            tools:progress="25"/>
    
        <TextView
            android:id="@+id/text_view_progress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="12sp"
            android:text="25%"
            android:textColor="@color/black"
            android:textAppearance="@style/TextAppearance.AppCompat.Large"
            app:layout_constraintBottom_toBottomOf="@+id/progress_bar"
            app:layout_constraintEnd_toEndOf="@+id/progress_bar"
            app:layout_constraintStart_toStartOf="@+id/progress_bar"
            app:layout_constraintTop_toTopOf="@+id/progress_bar"
            tools:text="25%" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    结果:

    【讨论】:

      猜你喜欢
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 2020-11-01
      • 1970-01-01
      相关资源
      最近更新 更多