Android ProgressBar Kullanımı

Merhabalar, bugün uygulamalarda sık sık kullanılan bir bileşen olan ProgressBar’ın kullanımını öğreneceğiz.


ProgressBar Nedir?

Android uygulamalarda çeşitli işlemler yapıldığında her zaman bir bekleme süresi olur. Bu süre içerisinde kullanıcıya boş bir ekran göstermek yerine işlemin devam ettiğini gösteren yapılar yani ProgressBar kullanılır.

Standart ProgressBar dairesel bir animasyon ile gelir. Animasyonla birlikte işlemin devam ettiği belirtilir.

Diğer ProgressBar kullanımında ise tamamlanan işlemin ve kalan işlemin ne kadar olduğu kullanıcıya gösterilir.

Kullanıcı bir dosyayı download ettiğinde yükleniyor ibaresini ve load işlemini görüntüleyecektir.


ProgressBar Özellikleri

ProgressBar’da default maksimum değer 100’dür. XML dosyasından android:max, Java ile progressBar.setMax(int); metoduyla değiştirebilirsiniz.

ProgressBar, default olarak dairesel animasyonla beraber gelir. android:style özelliğini kullanarak ProgressBar’ın widget türünü değiştirebilirsiniz.

  • android:progressBarStyle
  • android:progressBarStyleHorizontal
  • android:progressBarStyleLarge
  • android:progressBarStyleSmall

@android:style/Widget.ProgressBar.Large” büyük dairesel bir ProgressBardır.

@style/Base.Widget.AppCompat.ProgressBar.Horizontal” yatay eksende çubuk şeklinde bir ProgressBardır.

android:progressDrawable özelliğini kullanarak özelleştirilmiş ProgressBar’ı kullanabilirsiniz.


ProgressBar Örnek Uygulama

Örneğimizi Kotlin diliyle yapacağız. Kullanıcı start butonuna tıklayınca ProgressBar çalışmaya başlayacak. Altta değeri 5’er 5’er artarak yazılacak. Değeri 100 olduğunda ise Timer durdurulacak. ProgressBar gizlenecek ve Button name değeri update edilecek.

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button"
        android:layout_width="191dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"
        android:layout_marginBottom="277dp"
        android:text="Start"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="204dp"
        android:layout_marginBottom="61dp"
        android:indeterminate="true"
        android:max="100"
        android:minWidth="200dp"
        android:minHeight="50dp"
        android:progress="0"
        app:layout_constraintBottom_toTopOf="@+id/textView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="241dp"
        android:layout_height="50dp"
        android:layout_marginBottom="46dp"
        android:gravity="center"
        android:textColor="@android:color/white"
        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/progressBar" />
</androidx.constraintlayout.widget.ConstraintLayout>
class MainActivity : AppCompatActivity() {


    var progressBar: ProgressBar? = null
    var value = 0
    var textView: TextView? = null
    val handler = Handler()
    var button: Button? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        progressBar = findViewById(R.id.progressBar)
        textView = findViewById(R.id.textView)
        button = findViewById(R.id.button)

        // butona tıklayınca işlemler baslıyor
        button!!.setOnClickListener {
            value = progressBar!!.progress

            // thread baslangıcı
            Thread(Runnable {
                while (value < 100) {

                    // değeri 5 arttırıyor.
                    value += 5


                    handler.post {

                        // değeri guncelle
                        progressBar!!.progress = value

                        // değeri yaz
                        textView!!.text = value.toString() + "/" + progressBar!!.max
                    }
                    try {
                        // 500 ms boyunca değeri arttır.
                        Thread.sleep(500)
                    } catch (e: InterruptedException) {
                        e.printStackTrace()
                    }

                    // Değer 100 olunca progressbar'ı gizle ve button ismini stop olarak update et.
                    if (value == 100){

                        progressBar!!.visibility= View.INVISIBLE
                        button!!.text = "Stop"
                    }

                }
            }).start()
        }

    }
}

Gelecek yazılarda görüşmek üzere bol kodlu günler dilerim 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir