17 Aralık 2024 Yazarı yhackup 0

Android (Java) ProgressDialog Kullanımı

Merhabalar,

Bu ProgressDialog denen arkadaş bir işlemin ilerleme derecesini gösteren hacettir 🙂 Alertdialog gibi ekrana bir uyarı basar ve bu uyarıda işlemin ne durumda olduğunu gösterir.

İki tipi var birisi “STYLE_HORIZONTAL” diğeri “STYLE_SPINNER” Aşağıdaki Görseller aralarındaki farkı daha iyi anlatacaktır. Soldaki SPINNER, Sağdaki HORIZONTAL.


ProgressDialog’dan bahsederken AsyncTask kullanacağım ufak bir bilgilendirme yapayım bununla ilgili daha sonra anlatırım zamanı gelince, ben örneğimde Progressbarı doldurabilmek için for döngüsü içerisinde Thread.sleep(); kulanarak Progressbarı artırdığım için, bu işlem ekranın donmasına sebep olacaktır. Bu donmayı engellemek için AsyncTask kullandım.

 

//
 //

   ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);  // Yeni bir progressDialog oluşturuyoruz.
   progressDialog.
setMessage
("setTitle"); // progressDialogumuzun başlığı progressDialog.setMessage("setMessage" ); // progressDialogumuzun Mesajı progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER ); // progressDialogumuzun Stili // setProgressStyle seçmediğinizde varsayılan SPINNER'dır. eğer STYLE_SPINNER kullanacaksanız bunu yazmanıza gerek yok progressDialog.setIndeterminate(false); // STYLE_HORIZONTAL kullanırken progressbarın belirli bir yüzde ile artmasından ziyada sürekli akan bir bar oluşturur. progressDialog.setCancelable(false); // progressDialog ekrana basıldığında, kişi bu alanın dışında bir alana tıkladığında progressDialog'un kapanıp kapanmayacağını belirler. progressDialog.setIcon(R.drawable.ic_add_alert_black_48dp); progressDialog'un iconu // progressDialog'umuzu ayarladık şimdi gelelim bunu ekrana basmaya, // if (!progressDialog.isShowing()){ // Eğer progressDialog ekranda değil ise progressDialog.show(); // progressDialog ekrana bas } // İşlem bitti ve kapatıyoruz. if (progressDialog.isShowing()){ // Eğer progressDialog ekranda ise progressDialog.dismiss(); // progressDialog'u sonlandır. } // Bazen progressDialog başladığında ve bittiğince bazı işlemler yapmasını isteyebiliriz // progressDialog.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialogInterface) { // progressDialog ekrana basıldığı an burası çalışacaktır } }); progressDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialogInterface) { // progressDialog sonlandırıldığı an burası çalışacaktır } });

 

Basitçe Kullanım bu şekilde, Şimdi STYLE_HORIZONTAL ile ilgili ek bilgi vereyim.

 

ProgressDialog Gif – 1

 

ProgressDialog Gif – 2

 

ProgressDialog Gif – 3

//
//
// ProgressDialog Gif - 1 Normal kullanım diyelim
// ProgressDialog Gif - 2 deki görüntü için progressDialog.setProgressNumberFormat("Araç Listesi Yükleniyor");
// ProgressDialog Gif - 3 deki görüntü için progressDialog.setIndeterminate(true);


        ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
        progressDialog.setTitle("setTitle");
        progressDialog.setMessage("setMessage" );
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setIndeterminate(true); // ProgressDialog Gif - 3
        progressDialog.setCancelable(false);
        progressDialog.setIcon(R.drawable.ic_add_alert_black_48dp);
        progressDialog.setProgressNumberFormat("Araç Listesi Yükleniyor"); //ProgressDialog Gif - 2

        progressDialog.setSecondaryProgress(100);
        progressDialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface dialogInterface) {
                Toast.makeText(MainActivity.this, " progressDialog.setOnShowListener", Toast.LENGTH_SHORT).show();
            }
        });
        progressDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialogInterface) {
                Toast.makeText(MainActivity.this, " progressDialog.setOnDismissListener", Toast.LENGTH_SHORT).show();
            }
        });


        fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {

                new Baslat().execute((Void) null);

            }
        });


//////==============================================
   private class Baslat extends AsyncTask<Object, Object, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            if (!progressDialog.isShowing()){
                progressDialog.show();
            }
        }
        @Override
        protected Void doInBackground(Object... arg0) {
            if (progressDialog.isShowing()){
                for (int i = 1; i < 101; i++) {
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    progressDialog.setProgress(i); //her döngüde i nin aldığı değeri progressDialog'a set ediyoruz.
                }
            }
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
        if (progressDialog.isShowing()){
            progressDialog.dismiss();
        }
        super.onPostExecute(result);
    }
    @Override
    protected void onCancelled() {
        super.onCancelled();
    }
}
//////==============================================


 

Anlaşılır bir dille yazmaya çalıştım ama varsa sorularınız alabilirim.

Saygılarımla…