Як створити кругову панель прогресу в Android, яка обертається на ній?


154

Я намагаюся створити округлу панель прогресу. Це я хочу досягти

Є кільце фону сірого кольору. Зверху на ній з’являється смуга прогресу синього кольору, яка рухається круговим шляхом від 0 до 360 за 60 або будь-яку кількість секунд.

введіть тут опис зображення

Ось мій приклад коду.

<ProgressBar
            android:id="@+id/ProgressBar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            style="?android:attr/progressBarStyleLarge"
            android:indeterminateDrawable="@drawable/progressBarBG"
            android:progress="50"
            />

Для цього в мальованому "progressBarBG" я створюю список шарів і всередині цього списку шарів я даю два елементи, як показано.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
    <shape
            android:shape="ring"
            android:innerRadius="64dp"
            android:thickness="8dp"
            android:useLevel="false">

        <solid android:color="@color/grey" />
    </shape>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape
                android:shape="ring"
                android:innerRadius="64dp"
                android:thickness="8dp"
                android:useLevel="false">

            <solid android:color="@color/blue" />
        </shape>
    </clip>
</item>

Тепер перше сіре кільце генерується штрафом. Синє кільце, однак, починається зліва від місця, що малюється, і йде вправо так, як працює лінійна смуга прогресу. Ось як це демонструє 50% -ний прогрес, коли стрілка червоного кольору показує напрямок.

введіть тут опис зображення

Я хочу перемістити синю смугу прогресу круговою доріжкою, як очікувалося.


9
Не впевненість, чому ви проголосували, здається трохи несправедливою.
BenjaminPaul

1
Я подивився, перш ніж публікувати це питання. Я знайшов відповіді, але вони не спрацювали над тим, що я намагаюся досягти. Можливо, хтось прихильнив мене, думаючи, що це дублікат.
Саурав Срівастава

1
можливо, це може навести вас у правильному напрямку github.com/grmaciel/two-level-circular-progress-bar
gmemario

1
Ви можете використовувати цю бібліотеку github.com/emre1512/CircleProgressBar
Запдос

1
Чи бажаєте ви нагородити когось із щедрих людей, які намагалися знайти для вас рішення за його / її великі зусилля, прийнявши одну з наданих відповідей?
генеральний директор tech4lifeapps

Відповіді:


324

Ось два мої рішення.

Коротка відповідь:

Замість створення layer-listфайлу я розділив його на два файли. Один дляProgressBar і один для його фону.

Це ProgressDrawableфайл (папка @drawable): circular_progress_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="270"
    android:toDegrees="270">
    <shape
        android:innerRadiusRatio="2.5"
        android:shape="ring"
        android:thickness="1dp"
        android:useLevel="true"><!-- this line fixes the issue for lollipop api 21 -->

        <gradient
            android:angle="0"
            android:endColor="#007DD6"
            android:startColor="#007DD6"
            android:type="sweep"
            android:useLevel="false" />
    </shape>
</rotate>

І це для своєї backgroundпапки (@drawable): circle_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadiusRatio="2.5"
    android:thickness="1dp"
    android:useLevel="false">

    <solid android:color="#CCC" />

</shape>

І наприкінці всередині макета, над яким ви працюєте:

<ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:indeterminate="false"
        android:progressDrawable="@drawable/circular_progress_bar"
        android:background="@drawable/circle_shape"
        style="?android:attr/progressBarStyleHorizontal"
        android:max="100"
        android:progress="65" />

Ось результат:

результат 1

Довга відповідь:

Використовуйте спеціальний вигляд, який успадковує android.view.View

результат 2

Ось повний проект на github


@Pedram Як слід встановити відсоток до смуги прогресу? Як, наприклад, зараз це було б 50%. Як я повинен встановити 50% на смугу прогресу?

@ 20 центів. Прочитайте документацію, ви повинні отримати посилання на свою панель прогресу, а виклик її setProgressметоду потім передати значення. google.com/…
М. Реза Насірлуо

Я зійшов з глузду, намагаючись знайти правильні значення, червоні десятки тем, що знаходяться у потоці, тільки щоб знайти рішення тут .. android:fromDegrees="270" android:toDegrees="270"вирішив це !! Велике дякую!
Анріке де Суса

@Skynet Так, і я не намагався це виправити, тому що я вважаю за краще створити повністю налаштований з розширенням View Class developer.android.com/training/custom-views/index.html
M. Reza Nasirloo

1
@MimArmand Привіт, спасибі, насправді він знову почне працювати у льодянику 5.1 оновлення, і цей рядок виправляє проблему для api 21.
М. Reza Nasirloo

23

Я зробив це простим способом:

Перевірте, чи не знімається екран.

CustomProgressBarActivity.java :

public class CustomProgressBarActivity extends AppCompatActivity {

    private TextView txtProgress;
    private ProgressBar progressBar;
    private int pStatus = 0;
    private Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom_progressbar);

        txtProgress = (TextView) findViewById(R.id.txtProgress);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (pStatus <= 100) {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            progressBar.setProgress(pStatus);
                            txtProgress.setText(pStatus + " %");
                        }
                    });
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    pStatus++;
                }
            }
        }).start();

    }
}

activity_custom_progressbar.xml :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.skholingua.android.custom_progressbar_circular.MainActivity" >


    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:layout_height="wrap_content">

        <ProgressBar
            android:id="@+id/progressBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="250dp"
            android:layout_height="250dp"
            android:layout_centerInParent="true"
            android:indeterminate="false"
            android:max="100"
            android:progress="0"
            android:progressDrawable="@drawable/custom_progressbar_drawable"
            android:secondaryProgress="0" />


        <TextView
            android:id="@+id/txtProgress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/progressBar"
            android:layout_centerInParent="true"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </RelativeLayout>



</RelativeLayout>

custom_progressbar_dravable.xml :

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="-90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="270" >

    <shape
        android:shape="ring"
        android:useLevel="false" >
        <gradient
            android:centerY="0.5"
            android:endColor="#FA5858"
            android:startColor="#0099CC"
            android:type="sweep"
            android:useLevel="false" />
    </shape>

</rotate>

Сподіваюся, що це вам допоможе.


Привіт, Hiren, я намагаюся відобразити лише два кольори у зображенні. Червоний і зелений. Але я бачу якусь суміш червоного та зеленого в колі. Як я можу це видалити?
Локеш Пандей

20

Я написав докладний приклад на круговій смузі прогресу в андроїді тут, на своєму блозі demonuts.com . Ви також можете полюбити повний вихідний код та пояснення там.

Ось як я зробив кругову панель прогресу з відсотком всередині кола в чистому коді без бібліотеки.

введіть тут опис зображення

спочатку створіть файл, який можна назвати, який називається circular.xml

<?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="0"
                    android:pivotX="50%"
                    android:pivotY="50%"
                    android:toDegrees="360" />

                <gradient
                    android:centerColor="#00FF00"
                    android:endColor="#00FF00"
                    android:startColor="#00FF00"
                    android:type="sweep" />

            </shape>
        </rotate>
    </item>
</layer-list>

Тепер у вашому activity_main.xml дописі:

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/dialog"
    tools:context="com.example.parsaniahardik.progressanimation.MainActivity">

    <ProgressBar

        android:id="@+id/circularProgressbar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:indeterminate="false"
        android:max="100"
        android:progress="50"
        android:layout_centerInParent="true"
        android:progressDrawable="@drawable/circular"
        android:secondaryProgress="100"
        />

    <ImageView
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:background="@drawable/whitecircle"
        android:layout_centerInParent="true"/>

    <TextView
        android:id="@+id/tv"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:gravity="center"
        android:text="25%"
        android:layout_centerInParent="true"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="20sp" />

</RelativeLayout>

В activity_main.xmlя використовував одну кругового зображення з білим фоном , щоб показати білий фон навколо відсотків. Ось зображення:

введіть тут опис зображення

Ви можете змінити колір цього зображення, щоб встановити спеціальний колір у відсотках тексту.

Тепер, нарешті, додайте наступний код до MainActivity.java:

import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.animation.DecelerateInterpolator;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    int pStatus = 0;
    private Handler handler = new Handler();
    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Resources res = getResources();
        Drawable drawable = res.getDrawable(R.drawable.circular);
        final ProgressBar mProgress = (ProgressBar) findViewById(R.id.circularProgressbar);
        mProgress.setProgress(0);   // Main Progress
        mProgress.setSecondaryProgress(100); // Secondary Progress
        mProgress.setMax(100); // Maximum Progress
        mProgress.setProgressDrawable(drawable);

      /*  ObjectAnimator animation = ObjectAnimator.ofInt(mProgress, "progress", 0, 100);
        animation.setDuration(50000);
        animation.setInterpolator(new DecelerateInterpolator());
        animation.start();*/

        tv = (TextView) findViewById(R.id.tv);
        new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (pStatus < 100) {
                    pStatus += 1;

                    handler.post(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            mProgress.setProgress(pStatus);
                            tv.setText(pStatus + "%");

                        }
                    });
                    try {
                        // Sleep for 200 milliseconds.
                        // Just to display the progress slowly
                        Thread.sleep(8); //thread will take approx 1.5 seconds to finish
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
}

Якщо ви хочете зробити горизонтальну панель прогресу, перейдіть за цим посиланням, у ньому є багато цінних прикладів із вихідним кодом:
http://www.skholingua.com/android-basic/user-interface/form-widgets/progressbar


15

Я зрозумів, що бібліотека з відкритим кодом на GitHub CircularProgressBar робить саме те, що ви хочете найпростішим можливим способом:

Gif демонстрація CircularProgressBar

ВИКОРИСТАННЯ

Для того, щоб зробити кругову ProgressBar додати CircularProgressBar в макеті XML і додати бібліотеку CircularProgressBar в вашому проекторі або ви також можете захопити його з допомогою Gradle:

compile 'com.mikhaellopez:circularprogressbar:1.0.0'

XML

<com.mikhaellopez.circularprogressbar.CircularProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:background_progressbar_color="#FFCDD2"
    app:background_progressbar_width="5dp"
    app:progressbar_color="#F44336"
    app:progressbar_width="10dp" />

Щоб змінити свій CircularProgressBar, ви повинні використовувати наступні властивості у своєму XML.

Властивості:

  • app:progress (ціле число) >> за замовчуванням 0
  • app:progressbar_color (кольоровий) >> чорний за замовчуванням
  • app:background_progressbar_color (колір) >> за замовчуванням GREY
  • app:progressbar_width (розмірність) >> за замовчуванням 7dp
  • app:background_progressbar_width (розмірність) >> за замовчуванням 3dp

JAVA

CircularProgressBar circularProgressBar = (CircularProgressBar)findViewById(R.id.yourCircularProgressbar);
circularProgressBar.setColor(ContextCompat.getColor(this, R.color.progressBarColor));
circularProgressBar.setBackgroundColor(ContextCompat.getColor(this, R.color.backgroundProgressBarColor));
circularProgressBar.setProgressBarWidth(getResources().getDimension(R.dimen.progressBarWidth));
circularProgressBar.setBackgroundProgressBarWidth(getResources().getDimension(R.dimen.backgroundProgressBarWidth));
int animationDuration = 2500; // 2500ms = 2,5s
circularProgressBar.setProgressWithAnimation(65, animationDuration); // Default duration = 1500ms

Розкладіть або завантажте цю бібліотеку тут >> https://github.com/lopspower/CircularProgressBar


Я намагаюсь це дійсно дивовижно, але зараз знайшов будь-який слухач зміни анімації. Чи знаєте ви будь-який спосіб?
Md Imran Choudhury

@ lopez.mikhael Привіт, у вас є ідеї, як додати зображення між циркулярними?
hyperfkcb

@DeniseTan ви можете просто використовувати FrameLayout або RelativeLayout для цього.
lopez.mikhael

8

Ось простий нестандартний перегляд для прогресу відображення кола. Ви можете змінити та оптимізувати більше, щоб відповідати вашому проекту.

class CircleProgressBar @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : View(context, attrs, defStyleAttr) {
    private val backgroundWidth = 10f
    private val progressWidth = 20f

    private val backgroundPaint = Paint().apply {
        color = Color.LTGRAY
        style = Paint.Style.STROKE
        strokeWidth = backgroundWidth
        isAntiAlias = true
    }

    private val progressPaint = Paint().apply {
        color = Color.RED
        style = Paint.Style.STROKE
        strokeWidth = progressWidth
        isAntiAlias = true
    }

    var progress: Float = 0f
        set(value) {
            field = value
            invalidate()
        }

    private val oval = RectF()
    private var centerX: Float = 0f
    private var centerY: Float = 0f
    private var radius: Float = 0f

    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
        centerX = w.toFloat() / 2
        centerY = h.toFloat() / 2
        radius = w.toFloat() / 2 - progressWidth
        oval.set(centerX - radius,
                centerY - radius,
                centerX + radius,
                centerY + radius)
        super.onSizeChanged(w, h, oldw, oldh)
    }

    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
        canvas?.drawCircle(centerX, centerY, radius, backgroundPaint)
        canvas?.drawArc(oval, 270f, 360f * progress, false, progressPaint)
    }
}

Приклад використання

xml

<com.example.androidcircleprogressbar.CircleProgressBar
    android:id="@+id/circle_progress"
    android:layout_width="200dp"
    android:layout_height="200dp" />

котлін

class MainActivity : AppCompatActivity() {
    val TOTAL_TIME = 10 * 1000L

    override fun onCreate(savedInstanceState: Bundle?) {
        ...

        timeOutRemoveTimer.start()
    }

    private var timeOutRemoveTimer = object : CountDownTimer(TOTAL_TIME, 10) {
        override fun onFinish() {
            circle_progress.progress = 1f
        }

        override fun onTick(millisUntilFinished: Long) {
            circle_progress.progress = (TOTAL_TIME - millisUntilFinished).toFloat() / TOTAL_TIME
        }
    }
}

Результат


5

Я новий, тому не можу коментувати, але думав поділитися ледачим виправленням. Я також використовую оригінальний підхід Педрама, і я просто натрапив на ту саму проблему Lollipop. Але у alanv в іншому дописі було виправлено один рядок. Це якась помилка чи недогляд в API21. Буквально просто додайте android:useLevel="true"до кола прогрес xml. Новий підхід Педрама все ще є належним виправленням, але я просто подумав, що поділяю також ледачий виправлення.


3

спробуйте за допомогою цього методу створити растрову карту та встановити її на перегляд зображень.

private void circularImageBar(ImageView iv2, int i) {


    Bitmap b = Bitmap.createBitmap(300, 300,Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(b); 
    Paint paint = new Paint();

        paint.setColor(Color.parseColor("#c4c4c4"));
        paint.setStrokeWidth(10);
        paint.setStyle(Paint.Style.STROKE);
        canvas.drawCircle(150, 150, 140, paint);

        paint.setColor(Color.parseColor("#FFDB4C"));
        paint.setStrokeWidth(10);   
        paint.setStyle(Paint.Style.FILL);
        final RectF oval = new RectF();
        paint.setStyle(Paint.Style.STROKE);
        oval.set(10,10,290,290);

        canvas.drawArc(oval, 270, ((i*360)/100), false, paint);
        paint.setStrokeWidth(0);    
        paint.setTextAlign(Align.CENTER);
        paint.setColor(Color.parseColor("#8E8E93")); 
        paint.setTextSize(140);

        canvas.drawText(""+i, 150, 150+(paint.getTextSize()/3), paint); 

        iv2.setImageBitmap(b);
}

2

https://github.com/passsy/android-HoloCircularProgressBar - один із прикладів бібліотеки, яка це робить. Як зазначав Tenfour04, це повинно бути дещо на замовлення, оскільки це не підтримується безпосередньо поза коробкою. Якщо ця бібліотека не веде себе так, як ви хочете, ви можете роздрібнити її та змінити деталі, щоб вона працювала на ваш смак. Якщо ви реалізуєте щось, що потім можуть повторно використовувати інші, ви можете навіть надіслати запит на витяг, щоб повернути це об’єднання!


Я бачив і цю бібліотеку, але не хотів використовувати іншу сторонній бібліотеку лише для цього невеликого завдання. Однак я спробую скористатися методами, згаданими вами та Tenfour04, щоб побачити, який з них працює для мене, і відповісти тут.
Саурав Срівастава

1
@SauravSrivastava: Я також шукаю подібну анімацію в своєму додатку. Ви знайшли рішення? Якщо так, будь ласка, поділіться рішенням.
Basher51

@Travis Будь ласка, дивіться це запитання - stackoverflow.com/questions/44801280/…
Кумар

2

@Pedram, ваше старе рішення насправді прекрасно працює в льодянику (і краще, ніж нове, оскільки воно доступне всюди, в тому числі і на віддалених поданнях), просто змініть свій circular_progress_bar.xmlкод на це:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="270"
    android:toDegrees="270">
    <shape
        android:innerRadiusRatio="2.5"
        android:shape="ring"
        android:thickness="1dp"
        android:useLevel="true"> <!-- Just add this line -->
        <gradient
            android:angle="0"
            android:endColor="#007DD6"
            android:startColor="#007DD6"
            android:type="sweep"
            android:useLevel="false" />
    </shape>
</rotate>

2
Відмінне зауваження на android: useLevel = "вірно" !!! Ви допомогли мені вирішити важливу проблему на Android 5! Велике спасибі!
ДмитроКануннікофф

2
package com.example.ankitrajpoot.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;


public class MainActivity extends Activity {

    private ProgressBar spinner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner=(ProgressBar)findViewById(R.id.progressBar);
        spinner.setVisibility(View.VISIBLE);
    }
}

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loadingPanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">

<ProgressBar
    android:id="@+id/progressBar"

    android:layout_width="48dp"
    style="?android:attr/progressBarStyleLarge"
    android:layout_height="48dp"
    android:indeterminateDrawable="@drawable/circular_progress_bar"
    android:indeterminate="true" />
</RelativeLayout>





<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromDegrees="0"
    android:toDegrees="1080">
    <shape
        android:shape="ring"
        android:innerRadiusRatio="3"
        android:thicknessRatio="8"
        android:useLevel="false">

        <size
            android:width="56dip"
            android:height="56dip" />

        <gradient
            android:type="sweep"
            android:useLevel="false"
            android:startColor="@android:color/transparent"
            android:endColor="#1e9dff"
            android:angle="0"
            />

    </shape>
</rotate>

Ви можете розглянути можливість додавання опису запропонованого рішення.
il_raffa

2

З бібліотекою матеріальних компонентів ви можете використовувати стиль ProgressIndicatorзі Widget.MaterialComponents.ProgressIndicator.Circular.Determinateстилем.

Щось на зразок:

<com.google.android.material.progressindicator.ProgressIndicator
    style="@style/Widget.MaterialComponents.ProgressIndicator.Circular.Determinate"
    app:indicatorColor="@color/...."
    app:trackColor="@color/...."
    app:circularRadius="64dp"/>

Ви можете використовувати такі атрибути:

  • circularRadius: визначає радіус кругового індикатора ходу
  • trackColor: колір, який використовується для треку прогресу. Якщо це не визначено, він буде встановлено на тему indicatorColorта застосувати android:disabledAlphaтему.
  • indicatorColor: єдиний колір, що використовується для індикатора у визначеному / невизначеному режимі. За замовчуванням він використовує основний колір теми

введіть тут опис зображення

Використовуйте progressIndicator.setProgressCompat((int) value, true);для оновлення значення в індикаторі.

Примітка: для цього потрібна принаймні версія 1.3.0-alpha01.


Яка необхідна залежність бібліотеки?
бікрам

@bikram Бібліотека матеріальних компонентів, надана google.
Габріеле Маріоти

Я додав реалізацію 'com.google.android.material: material: 1.1.0' для build.gradle, але все ще ProgressIndicator не відображається.
бікрам

@bikram Як описано у відповіді: для цього потрібна принаймні версія 1.3.0-alpha01.
Габріеле Маріоти

1

Зміна

android:useLevel="false"

до

android:useLevel="true"

для другого сапе з id="@android:id/progress

сподіваюся, що це працює

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.