AsyncTask এবং ProgressDialog ব্যবহার করে লোডিং স্ক্রিন
এই উদাহরণটি দেখায় কীভাবে একটি অ্যাক্টিভিটি বা লং-রানিং টাস্ক শুরু করার আগে প্রোগ্রেস ডায়ালগ দেখানো যায়। নোট: ProgressDialog ডিপ্রিকেটেড, আধুনিক অ্যাপে ProgressBar বা Jetpack Compose ব্যবহার করুন।
ধাপ ১: প্রজেক্ট তৈরি করুন
Android Studio-তে নতুন প্রজেক্ট।
ধাপ ২: লেআউট (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="4dp"
tools:context=".MainActivity">
<TextView
android:layout_marginTop="30dp"
android:text="অ্যান্ড্রয়েডে অ্যাক্টিভিটি শুরু করার আগে প্রোগ্রেস ডায়ালগ দেখানো.."
android:textStyle="bold"
android:textSize="24sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
ধাপ ৩: MainActivity.java - AsyncTask ব্যবহার
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("কন্টেন্ট লোডার");
progressDialog.setProgress(10);
progressDialog.setMax(100);
progressDialog.setMessage("লোড হচ্ছে...");
new MyTask().execute();
}
public class MyTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog.show();
}
@Override
protected Void doInBackground(Void... unused) {
// ব্যাকগ্রাউন্ডে ভারী কাজ করুন (নেটওয়ার্ক, ডাটাবেস ইত্যাদি)
try {
Thread.sleep(3000); // ৩ সেকেন্ডจำ কাল
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
progressDialog.dismiss();
// এখানে পরবর্তী অ্যাক্টিভিটি শুরু করুন
}
}
}
⚠️ গুরুত্বপূর্ণ সতর্কতা
ProgressDialog API 26-এ ডিপ্রিকেটেড এবং ভবিষ্যতে সরানো হতে পারে। আধুনিক বিকল্প:
বিকল্প ১: ProgressBar (XML-এ)
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
বিকল্প ২: Jetpack Compose-এ CircularProgressIndicator
@Composable
fun LoadingScreen() {
Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
CircularProgressIndicator()
Spacer(modifier = Modifier.padding(16.dp))
Text("লোড হচ্ছে...")
}
}
বিকল্প ৩: Coroutines + Flow (Kotlin)
lifecycleScope.launch {
_isLoading.value = true
try {
val result = repository.loadData()
_data.value = result
} finally {
_isLoading.value = false
}
}
ধাপ ৪: ম্যানিফেস্ট
সাধারণ কনফিগারেশন।