Android | ProgressBar Dialog oluşturma

Written by Super User. Posted in Android Anlatımlar

Ekran görüntümüz;

Android'de ProgressBar Dialog oluşturmayı örnek kodlar sunarak anlatmak istiyorum.

main.xml dosyamız

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <Button
        android:id="@+id/indirmeButonu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="İndirmeyi Başlat" />

</LinearLayout>

MainActivity sınıfımız;

package com.gokselguren.progressbar;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	Button indirmeButonu;
	ProgressDialog progressBar;
	private int progressBarStatus = 0;
	private Handler progressBarHandler = new Handler();
	private long dosyaBoyutu = 0;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		addListenerOnButton();

	}

	public void addListenerOnButton() {

		indirmeButonu = (Button) findViewById(R.id.indirmeButonu);
		indirmeButonu.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				//ProgressBar özelliklerini ayarla
				progressBar = new ProgressDialog(v.getContext());
				progressBar.setCancelable(true);
				progressBar.setMessage("Dosya indiriliyor ...");
				progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
				progressBar.setProgress(0);
				progressBar.setMax(100);
				progressBar.show();

				// ProgressBar durumunu resetle
				progressBarStatus = 0;
				// Dosya boyutunu resetle
				dosyaBoyutu = 0;

				new Thread(new Runnable() {
					public void run() {
						while (progressBarStatus < 100) {
							progressBarStatus = indirmeSimulasyon();
							
							try {
								//ProgressBar'ın biraz hızını keselim
								Thread.sleep(1000);
							} catch (InterruptedException e) {
								e.printStackTrace();
							}

							//ProgressBar durumunu güncelle
							progressBarHandler.post(new Runnable() {
								public void run() {
									progressBar.setProgress(progressBarStatus);
								}
							});
						}

						// Dosya indirme simulasyonu sona erdiğinde
						if (progressBarStatus >= 100) {

							
							try {
								//Biraz daha bekletelim.
								Thread.sleep(2000);
							} catch (InterruptedException e) {
								e.printStackTrace();
							}

							// ProgressBar Dialog'u kapat
							progressBar.dismiss();
						}
					}
				}).start();

			}
		});

	}

	public int indirmeSimulasyon() {

		while (dosyaBoyutu <= 100) {
			//Sürekli dosyaBoyutu değişkeni 1 artırılarak sanki bir dosya indirmesi yapılıyormuş gibi simulasyon yapılacak.
			dosyaBoyutu++;
			return (int) dosyaBoyutu;
		}
		return 100;
	}

}

Kod içerisinde yorum satırlarıyla mümkün olduğunca yapılanları açıklamaya çalıştım.