Android | ProgressBar Dialog oluşturma
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.
Leave your comments