আসসালামু আলাইকুম, কেমন আছেন সবাই আশা করি সবাই ভালো আছেন।
আজকের আমি আপনাদের শিখাবো কীভাবে Android Studio Java ব্যবহার করে আপনার Android অ্যাপে Dark Mode এবং Light Mode যুক্ত করবেন।
শুধু তাই নয়, আরো শিখাবো কিভাবে SharedPreferences এর মাধ্যমে ইউজার এর সিলেক্ট করা থিম এর তথ্য সংগ্রহ করে রাখবেন যাতে ইউজার যতক্ষণ পর্যন্ত আবার নিজে থেকে থিম পরিবর্তন না করবে, ততক্ষণ পর্যন্ত ইউজারের সিলেক্ট করা থিমটিই Save থাকবে।
তাহলে চলুন, আর সময় নষ্ট না করে দেখে নেওয়া যাক কীভাবে এই ফিচারটি আপনার অ্যাপে যুক্ত করবেন।
Step 01: XML Design Code
প্রথমে যে Activity থেকে থিম পরিবর্তন করতে চান, সেই Activity-এর XML Layout ফাইলে নিচের কোডটি যুক্ত করুন।
<Switch
android:id="@+id/themeSwitch"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OFF"/>নোট: এখানে একটি Switch ব্যবহার করা হয়েছে, যার মাধ্যমে ইউজার সহজেই Dark Mode এবং Light Mode সিলেক্ট করতে পারবেন।
Step 02: Java Code
এবার আমরা XML Layout-এ যোগ করা Switch-এর জন্য Java কোড লিখব এবং অ্যাপে Dark Mode ও Light Mode ফাংশনালিটি যুক্ত করব।
প্রথমে নিচের ভেরিয়েবলগুলো আপনার Activity-এর Java ফাইলে যুক্ত করুন।
Switch themeSwitch;
boolean isDarkModeEnabled;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;themeSwitch = findViewById(R.id.themeSwitch);এবার আপনার অ্যাপ Dark Mode এ আছে নাকি Light Mode এ আছে সেটা চেক করে Switch এর টেক্স এবং অন অফ স্টেটাস আপডেট করার জন্য একটু আগে যে কোডটা এড করলেন সেটার নিচের লাইনেই এই কোডটা বসান।
if (isDarkModeEnabled) {
themeSwitch.setChecked(true);
themeSwitch.setText("ON");
} else {
themeSwitch.setChecked(false);
themeSwitch.setText("OFF");
}এবার Switch এ ইউজার ক্লিক করলে থিম চেঞ্জ করার জন্য একটা OnClickListener এড করবো এর জন্য নিচের কোডটা কপি করে বসান।
themeSwitch.setOnClickListener(view -> {
isDarkModeEnabled = themeSwitch.isChecked();
myThemes();
});এবার অন ক্লিক এর মধ্যে যে myThemes(); এড করেছি এটার জন্য private void myThemes() বানাতে হবে, যার কোড নিচে থেকে কপি করে এড করুন।
নোটঃ এই কোডটা কিন্তু onCreate এর বাইরে এড করতে হবে।
private void myThemes(){
if (isDarkModeEnabled) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
editor.putBoolean("isDarkModeEnabled", true);
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
editor.putBoolean("isDarkModeEnabled", false);
}
editor.apply();
}এবার ইউজার এর সেটিং মানে ইউজার কোন থিম সিলেক্ট করেছে তার ডাটা SharedPreferences এ Save করা এবং SharedPreferences থেকে ডাটা চেক করে থিম আপডেট করার জন্য নিচের কোডটা কপি করে onCreate এর একদম শুরুতে এড করুন।
// ✅ সবার আগে theme set করুন — flicker বন্ধ হবে
sharedPreferences = getSharedPreferences("ThemePrefs", MODE_PRIVATE);
isDarkModeEnabled = sharedPreferences.getBoolean("isDarkModeEnabled", false);
editor = sharedPreferences.edit();
if (isDarkModeEnabled) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
}আমাদের কাজ শেষ। এখন অ্যাপ রান করে Dark Mode and Light Mode ফিচারটি আপনার অ্যাপ এ উপভোগ করুন।
আর হ্যা, আপনি যদি চান থিম চেঞ্জ করলে Switch এর কালার এবং টেক্স চেঞ্জ করতে তাহলে প্রথমে এই কোডটা onCreate এর মধ্যে এড করুন
updateSwitchColor(isDarkModeEnabled);এবার onCreate এর বাইরে এই কোডটা এড করুন।
private void updateSwitchColor(boolean isChecked) {
int thumbColor = isChecked
? getResources().getColor(R.color.primary) // ON = সবুজ
: getResources().getColor(R.color.black); // OFF = ধূসর
int trackColor = isChecked
? getResources().getColor(R.color.primary) // ON = হালকা সবুজ
: getResources().getColor(R.color.black); // OFF = হালকা ধূসর
// ✅ Text color
int textColor = isChecked
? getResources().getColor(R.color.primary) // ON = সবুজ
: getResources().getColor(R.color.black); // OFF = ধূসর
themeSwitch.getThumbDrawable().setTint(thumbColor);
themeSwitch.getTrackDrawable().setTint(trackColor);
themeSwitch.setTextColor(textColor);
}আমাদের কাজ শেষ, আশাকরি সবাই বুঝতে পারেছেন এবং শিখতে পেরেছেন কিভাবে Android Apps এ Dark Mode and Light Mode সেট করতে হয়।
সবাই ভাবো থাকবেন সুস্থ থাকবেন এবং আশাকরি সহজ টেক এর সাথেই থাকবেন। আল্লাহ হাফেজ।