Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız Android Eğitimleri yazı serimizde bu dersimizde Android ProgressDialog ve Progressbar Kullanımı ile devam ediyoruz.
ProgressDialog ile kullanıcıya bilgi mesajı vererek; ekranda dönen şekilde bir dialog gösterebiliriz. Kullanım şeklini inceleyecek olursak, aşağıdaki gibi tanımlama yaparak dinamik olarak ProgressDialog oluştururuz.
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setMessage("Devam eden işleminiz bulunmaktadır. Lütfen bekleyiniz.."); progressDialog.show();
Ekran çıktısı:
Kullanıcıyı uyarmanın birden çok yolu var. (Toast, AlertDialog, ProgressDialog vb.) yöntemler ile bu uyarıyı sağlayabiliriz. AlertDialog dersimi incelemek isterseniz bu linke bakabilirsiniz.
Önemli Methodlar
setTitle(): Dialog için başlık kısmını oluşturur.
setMessage(): Dialog içinde yer alacak mesajı girebilmemizi sağlar.
setMax(): Dialog da maksimum değeri ayarlamamız için kullanılır.
setProgressStyle(ProgressDialog.STYLE_HORIZONTAL): Açılan Dialogun ilerleme çubuğu şeklinde gösterilmesini sağlar. Aşağıdaki şekilde gördüğünüz gibi ilerleme çubuğu ile örnek olarak bir dosyanın indirme , tamamlanma yüzdesini gösterebiliriz.
setProgressStyle(ProgressDialog.STYLE_SPINNER) : Açılan Dialogun dönen circle şeklinde gösterilmesini sağlar.
getMax(): İlerlemenin maksimum değerini döndürür.
setIndeterminate(): Dialog daki progress için sürekli tekrar eden bir animasyon olup olmayacağına karar verir. Eğer true olarak tanımlarsak sürekli animasyon tekrarlaması ile çalışır.
setProgress(): Dialog için progress değerini ayarlamamızı sağlar.
Aşağıdaki kodu incelediğimizde yeni bir Thread açarak progress dialog da değerimizi sıfırdan başlatarak 100 e kadar ilerletiyoruz.
progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMessage("Lütfen bekleyiniz.."); progressDialog.show(); final int totalTime = 100; final Thread t = new Thread() { @Override public void run() { int jumpTime = 0; while(jumpTime < totalTime) { try { sleep(200); jumpTime += 1; progressDialog.setProgress(jumpTime); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }; t.start();
Ekran çıktısı:
ProgressDialog ekranda gösterirken işimiz bittiğinde kapatmak istersek; aşağıdaki gibi kontrol ile dismiss etmemiz gerekmektedir. Eğer null olup olmadığını ve gösterilip gösterilmediğini kontrol etmeden dismiss etmeye çalışırsak uygulamda çeşitli crash durumlarına sebep olabiliriz. Çünkü o sırada herhangi bir hatadan ötürü eğer ProgressDialog yok ise olmayan bir bileşeni dismiss etmeye çalışmak zaten hataya yol açacaktır.
if (progressDialog != null && progressDialog.isShowing()) { progressDialog.dismiss(); }
Api Level 26 ile birlikte ProgressDialog deprecated oldu ona alternatif olarak ProgressBar kullanabilirsiniz. Android in kendi sitesinde de bu şekilde kullanımı önerdiğini göreceksiniz. https://materialdoc.com/components/progress/
ProgressBar bileşenini uygulamamızda kullanabilmemiz için gerekli olan dependencies de aşağıdaki şekilde appcompat kütüphanesinin yer alması gerekmektedir.
dependencies { compile 'com.android.support:appcompat-v7:X.X.X' // X.X.X versiyon girilecek }
xml layout kısmında tanımlamak için;
<ProgressBar style="@style/Widget.AppCompat.ProgressBar" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
xml layout da ilerleme çubuğu olarak göstermek istersek; style olarak ProgressBar bileşenine aşağıdaki gibi tanımlama yapmalıyız.
<ProgressBar style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" />
Evet arkadaşlar Android ProgressDialog ve Progressbar Kullanımı aşamalarını sizlere detaylıca anlatmaya çalıştım. Umarım hepiniz için faydalı olmuştur.
Sıfırdan android dersleri için tıklayınız.
Mobilhanem.com üzerinden anlattığımız android uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.
Bir daha ki dersimizde görüşmek dileğiyle..
13