Android'de dönen dairesel bir ilerleme çubuğu nasıl oluşturulur?


154

Yuvarlak bir ilerleme çubuğu oluşturmaya çalışıyorum. Bunu başarmak istiyorum

Gri renkli bir arka plan halkası var. Üstünde, 60'da 0'dan 360'a veya herhangi bir saniyede dairesel bir yolda hareket eden mavi bir renk ilerleme çubuğu görünür.

resim açıklamasını buraya girin

İşte örnek kodum.

<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"
            />

Bunu yapmak için, çizilebilir "progressBarBG", bir katman listesi oluşturuyorum ve bu katman listesinin içinde gösterildiği gibi iki öğe veriyorum.

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

Şimdi, ilk gri halka iyi üretildi. Ancak mavi halka, çekmecenin solundan başlar ve doğrusal bir ilerleme çubuğunun nasıl çalıştığı gibi sağa gider. Yönü gösteren kırmızı renkli okla% 50 ilerleme gösterir.

resim açıklamasını buraya girin

Mavi ilerleme çubuğunu beklendiği gibi dairesel bir şekilde taşımak istiyorum.


9
Neden oy kullanıldığından emin değilim, biraz haksız görünüyor.
BenjaminPaul

1
Bu soruyu göndermeden önce baktım. Bazı cevaplar buldum ama elde etmeye çalıştığım şeyler için işe yaramadılar. Belki biri bana bunun yinelenen bir gönderi olduğunu düşündürdü.
Saurav Srivastava


1
Bu kütüphane kullanabilirsiniz github.com/emre1512/CircleProgressBar
Zapdos

1
Size verilen cevaplardan birini kabul ederek büyük çabaları için size bir çözüm bulmaya çalışan cömert insanlardan birini ödüllendirir misiniz?
CEO tech4lifeapps

Yanıtlar:


324

İşte benim iki çözümüm.

Kısa cevap:

A oluşturmak yerine layer-listiki dosyaya ayırdım. Biri ProgressBarve biri arka planı için.

Bu ProgressDrawabledosya (@drawable klasörü): 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>

Ve bu onun background(@drawable klasörü) içindir: 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>

Ve sonunda, çalıştığınız yerleşimin içinde:

<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" />

İşte sonuç:

sonuç 1

Uzun cevap:

Özel bir görünüm kullanın. android.view.View

sonuç 2

İşte github ile ilgili tüm proje


@Pedram İlerleme çubuğuna yüzdeyi nasıl ayarlamalıyım? Örneğin, şu anda% 50 olurdu. % 50'yi ilerleme çubuğuna nasıl ayarlamalıyım?

@ 20 Cents, Belgeleri okuyun, ilerleme çubuğunuza bir başvuru almalısınız ve setProgressyöntemini çağırın, sonra değeri iletin. google.com/…
M. Reza Nasirloo

Sadece burada çözümü bulmak için doğru değerleri, kırmızı düzinelerce akışı konularını bulmaya çalışırken çıldırdım .. android:fromDegrees="270" android:toDegrees="270"çözdüm !! Çok teşekkürler!
Henrique de Sousa

@Skynet Evet, düzeltmeyi denemedim çünkü View Class'ı genişleterek tamamen özelleştirilmiş bir tane oluşturmayı tercih ediyorum developer.android.com/training/custom-views/index.html
M. Reza Nasirloo

1
@MimArmand Hey teşekkürler, Aslında lolipop 5.1 güncellemesinde tekrar çalışmaya başlıyor ve bu satır api 21 için sorunu
çözüyor

23

Kolay bir şekilde yaptım:

Lütfen aynı ekran görüntüsünü kontrol edin.

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_drawable.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>

Umarım bu size yardımcı olacaktır.


Merhaba Hiren, görünümde sadece iki renk göstermeye çalışıyorum. Kırmızı ve yeşil. Ama dairede de kırmızı ve yeşilin bir karışımını görüyorum. Bunu nasıl kaldırabilirim?
Lokesh Pandey

20

Burada blog demonuts.com android dairesel ilerleme çubuğuna ayrıntılı bir örnek yazdım . Ayrıca tam kaynak kodunu ve açıklamasını da beğenebilirsiniz.

İşte herhangi bir kütüphane olmadan saf kod içinde daire içinde yüzde ile dairesel ilerleme çubuğu nasıl yaptım.

resim açıklamasını buraya girin

önce çekilebilir bir dosya oluşturun 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>

Şimdi activity_main.xml aşağıdakileri ekleyin:

  <?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>

Içinde activity_main.xmlbeyaz arka yüzde göstermek için beyaz arka plan ile bir dairesel görüntü kullandım. İşte görüntü:

resim açıklamasını buraya girin

Yüzde metninin etrafında özel renk ayarlamak için bu görüntünün rengini değiştirebilirsiniz.

Şimdi nihayet aşağıdaki kodu ekleyin 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();
    }
}

Yatay ilerleme çubuğu yapmak istiyorsanız, bu bağlantıyı izleyin, kaynak koduyla birçok değerli örneğe sahiptir:
http://www.skholingua.com/android-basic/user-interface/form-widgets/progressbar


15

GitHub CircularProgressBar'da tam olarak istediğinizi mümkün olan en basit şekilde yapan bir Açık Kaynak kütüphanesi gerçekleştirdim :

Gif demo CircularProgressBar

KULLANIM

Dairesel ProgressBar eklemek yapmak için CircularProgressBar sizin düzen XML ve ekleme CircularProgressBar kütüphane projektörünüzle ya da Gradle aracılığıyla yakala edebilirsiniz:

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'ınızı değiştirmek için XML'nizde aşağıdaki özellikleri kullanmanız gerekir.

Özellikleri:

  • app:progress (tamsayı) >> varsayılan 0
  • app:progressbar_color (renk) >> varsayılan SİYAH
  • app:background_progressbar_color (renk) >> varsayılan GRİ
  • app:progressbar_width (boyut) >> varsayılan 7dp
  • app:background_progressbar_width (boyut) >> varsayılan 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

Çatal veya Bu kütüphaneyi buradan indirin >> https://github.com/lopspower/CircularProgressBar


Bunu denemek gerçekten harika ama şimdi herhangi bir animasyon değişikliği dinleyici bulundu. Herhangi bir yolu biliyor musun?
Md Imran Choudhury

@ lopez.mikhael Hey Genelge arasına nasıl resim ekleyeceğinize dair bir fikriniz var mı?
hyperfkcb

Bunu yapmak için bir FrameLayout veya RelativeLayout kullanabilirsiniz.
lopez.mikhael

8

İşte, görüntüleme döngüsü ilerlemesi için basit bir özel görünüm. Projenize uygun olarak daha fazlasını değiştirebilir ve optimize edebilirsiniz.

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)
    }
}

Kullanım örneği

xml

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

KOTLIN

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
        }
    }
}

Sonuç


5

Ben yeniyim, bu yüzden yorum yapamam ama tembel düzeltmeyi paylaşmayı düşündüm. Pedram'ın orijinal yaklaşımını da kullanıyorum ve aynı Lollipop sorunuyla karşılaştım. Ancak başka bir gönderideki alanv'ın bir satır düzeltmesi vardı. API21 bir tür hata veya gözetim. Kelimenin tam anlamıyla sadece android:useLevel="true"daire ilerleme xml ekleyin . Pedram'ın yeni yaklaşımı hala doğru çözümdür, ancak tembel düzeltmeyi de paylaştığımı düşündüm.


3

bir bitmap oluşturmak ve görüntü görünümüne ayarlamak için bu yöntemi deneyin.

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 bunu yapan bir kütüphane örneğidir. Tenfour04'un belirttiği gibi, bunun doğrudan kutunun dışında desteklenmemesi nedeniyle biraz özel olması gerekir . Bu kütüphane istediğiniz gibi davranmazsa, onu çatallayabilir ve beğeninize göre çalışması için ayrıntıları değiştirebilirsiniz. Daha sonra başkalarının yeniden kullanabileceği bir şey uygularsanız, yeniden birleştirilmesi için bir çekme isteği bile gönderebilirsiniz!


Bu kütüphaneyi de gördüm ama sadece bu küçük görev için başka bir üçüncü taraf kütüphanesi kullanmak istemedim. Ancak, hangisinin benim için işe yaradığını görmek ve burada cevap vermek için hem sizin hem de Tenfour04'ün bahsettiği yöntemleri deneyeceğim.
Saurav Srivastava

1
@SauravSrivastava: Uygulamamda da benzer bir animasyon arıyorum. Çözümü buldunuz mu? Evet ise, lütfen çözümü paylaşın.
Basher51

@Travis Lütfen bu soruya bakın - stackoverflow.com/questions/44801280/…
Kumar

2

@Pedram, eski çözümünüz lolipopta da iyi çalışıyor (ve uzak görünümler de dahil olmak üzere her yerde kullanılabilir olduğu için yeni olandan daha iyi) sadece circular_progress_bar.xmlkodunuzu şu şekilde değiştirin :

<?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'de mükemmel açıklama: useLevel = "true" !!! Android 5'teki önemli sorunu çözmeme yardım ettin! Çok teşekkür ederim!
DmitryKanunnikoff

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>

Önerilen çözümün bir açıklamasını eklemeyi düşünebilirsiniz.
il_raffa

2

Malzeme Bileşenleri Kütüphanesi ProgressIndicatorile Widget.MaterialComponents.ProgressIndicator.Circular.Determinatestilini kullanabilirsiniz.

Gibi bir şey:

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

Bu özellikleri kullanabilirsiniz:

  • circularRadius: dairesel ilerleme göstergesinin yarıçapını tanımlar
  • trackColor: ilerleme izi için kullanılan renk. Eğer tanımlanmazsa, temaya ayarlanır ve temayı indicatorColoruygular android:disabledAlpha.
  • indicatorColor: belirleme / belirsiz modda gösterge için kullanılan tek renk. Varsayılan olarak tema birincil rengini kullanır

resim açıklamasını buraya girin

progressIndicator.setProgressCompat((int) value, true);Göstergedeki değeri güncellemek için kullanın .

Not: en azından sürüm gerektirir 1.3.0-alpha01.


Gerekli kitaplık bağımlılığı nedir?
bikram

@bikram Google tarafından sağlanan Malzeme Bileşenleri kütüphanesi .
Gabriele Mariotti

Build.gradle 'com.google.android.material: material: 1.1.0' uygulamasını ekledim ancak yine de ProgressIndicator görünmüyor.
bikram

@bikram Yanıtta açıklandığı gibi: en azından sürümü gerektirir 1.3.0-alpha01.
Gabriele Mariotti

1

Değişiklik

android:useLevel="false"

için

android:useLevel="true"

ikinci sahpe için id="@android:id/progress

umarım çalışır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.