ডার্ক মোড (ডার্ক থিম) একটি কালার স্কিম যেখানে স্ক্রিনের ব্যাকগ্রাউন্ড গাঢ় (গাঢ় ধূসর বা কালো) হয়ে যায় এবং টেক্সট ও এলিমেন্ট হালকা হয়। ডার্ক মোড কম আলোতে চোখের চাপ কমায়, OLED ডিসপ্লেতে ব্যাটারি চার্জ বাঁচায় (Google, 2019 অনুযায়ী 60% পর্যন্ত) এবং ফটোফোবিয়ায় আক্রান্ত ব্যবহারকারীদের জন্য অ্যাক্সেসিবিলিটি প্রয়োজনীয়তা পূরণ করে। iOS 13 এবং Android 10 এ ডার্ক মোড একটি সিস্টেম অপশনে পরিণত হয়েছে — ব্যবহারকারী গ্লোবালি ডার্ক থিম চালু করে, এবং অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে এটি গ্রহণ করে। আরও জানতে ডার্ক থিম সম্পর্কিত অফিসিয়াল Android ডকুমেন্টেশন দেখুন।
মূল পয়েন্ট
ডার্ক মোড একটি কালার স্কিম যেখানে স্ক্রিনের ব্যাকগ্রাউন্ড গাঢ় (সাধারণত Android এ #121212, iOS এ #1C1C1E) হয়, যখন টেক্সট এবং ইন্টারফেস এলিমেন্ট হালকা হয়। সাধারণ রঙ উল্টানোর বিপরীতে, মানসম্পন্ন ডার্ক মোড সাবধানে নির্বাচিত প্যালেট ব্যবহার করে: খাঁটি কালোর পরিবর্তে গাঢ় ধূসর ব্যাকগ্রাউন্ড (হ্যালো প্রভাব হ্রাস করে), কম স্যাচুরেশনযুক্ত অ্যাকসেন্ট রঙ এবং নরম ছায়া। সিস্টেম-স্তরের ডার্ক মোড সমর্থন iOS 13 (সেপ্টেম্বর 2019) এবং Android 10 (সেপ্টেম্বর 2019) এ এসেছে।
গ্রহণের মূল কারণ ব্যবহারকারীর আরাম। কম আলোতে (সন্ধ্যায়, অন্ধকারে) উজ্জ্বল সাদা স্ক্রিন চোখের চাপ সৃষ্টি করে এবং মাথাব্যথার কারণ হতে পারে। ডার্ক মোড পঠনযোগ্যতা না হারিয়ে স্ক্রিনের উজ্জ্বলতা হ্রাস করে। ফটোফোবিয়া বা আলোক সংবেদনশীলতায় আক্রান্ত ব্যবহারকারীদের জন্য, ডার্ক থিম কোনও বিকল্প নয় বরং অ্যাপ্লিকেশন আরামদায়কভাবে ব্যবহারের একমাত্র উপায়। Android Developers অনুযায়ী, 30% এর বেশি Android ব্যবহারকারী সবসময় ডার্ক থিম চালু রাখেন।
ডার্ক মোড OLED স্ক্রিনে ব্যাটারি বাঁচায়। LCD এর বিপরীতে, যেখানে ব্যাকলাইট সবসময় চালু থাকে, OLED পিক্সেল নিজেরাই আলোকিত হয়। গাঢ় রঙ মানে পিক্সেল বন্ধ — বিদ্যুৎ খরচ কমে যায়। Google (Android Developers Blog, 2019) অনুযায়ী, OLED ডিসপ্লে সহ Pixel এ 100% উজ্জ্বলতায় ডার্ক মোড হালকা থিমের তুলনায় বিদ্যুৎ খরচ 60% কমায়। LCD স্ক্রিনে সাশ্রয় ন্যূনতম (প্রায় 3-5%) কারণ ম্যাট্রিক্স ব্যাকলাইট পিক্সেল রঙ থেকে স্বাধীনভাবে কাজ করে।
সিস্টেম সমর্থন বেশ কয়েকটি ধাপ অতিক্রম করেছে। iOS 13 (2019) UIUserInterfaceStyle এর মাধ্যমে গ্লোবাল ডার্ক থিম চালু করেছে। Android 10 (2019) নিজস্ব ডার্ক থিম ছাড়া অ্যাপ্লিকেশনের জন্য Force Dark Mode যোগ করেছে। Android 12 (2021) Material You এর সাথে ওয়ালপেপার থেকে স্বয়ংক্রিয়ভাবে ডার্ক প্যালেট জেনারেট করা শুরু করেছে। iOS 15 (2021) Safari এবং ওয়েব কন্টেন্টের জন্য API প্রসারিত করেছে। StatCounter (2026) অনুযায়ী, App Store এবং Google Play এ শীর্ষ 100 অ্যাপ্লিকেশনের 82% ডার্ক মোড সমর্থন করে।
| প্ল্যাটফর্ম | সংস্করণ | বছর | মূল উদ্ভাবন |
|---|---|---|---|
| iOS | 13 | 2019 | UIUserInterfaceStyle, traitCollection.userInterfaceStyle |
| Android | 10 (Q) | 2019 | Force Dark Mode, AppCompat DayNight থিম |
| iOS | 15 | 2021 | ওয়েব কন্টেন্ট এবং Safari এর জন্য ডার্ক থিম |
| Android | 12 | 2021 | স্বয়ংক্রিয়ভাবে জেনারেটেড ডার্ক প্যালেট সহ Material You Dynamic Themes |
iOS ডার্ক মোড API UITraitEnvironment প্রোটোকলের উপর ভিত্তি করে। প্রতিটি UIViewController এবং UIView এর traitCollection.userInterfaceStyle প্রপার্টি থাকে, যা .unspecified, .light বা .dark হতে পারে। যখন সিস্টেম থিম পরিবর্তিত হয়, iOS traitCollectionDidChange(_:) মেথড কল করে। ডেভেলপারকে এই মেথডে রঙ আপডেট করতে হবে, বা ডায়নামিক রঙ (UIColor(dynamicProvider:)) ব্যবহার করতে হবে যা হালকা এবং ডার্ক প্যালেটের মধ্যে স্বয়ংক্রিয়ভাবে সুইচ করে।
class ViewController: UIViewController {
@IBOutlet var titleLabel: UILabel!
override func traitCollectionDidChange(_: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
updateColors()
}
}
func updateColors() {
let isDark = traitCollection.userInterfaceStyle == .dark
view.backgroundColor = isDark ? UIColor(named: "darkBackground") : .systemBackground
titleLabel.textColor = isDark ? .white : .darkText
}
}
// জোর করে ডার্ক মোড চালু করুন
window.overrideUserInterfaceStyle = .dark
ডায়নামিক রঙ — iOS এ ডার্ক মোড বাস্তবায়নের সর্বোত্তম উপায়। UIColor(named:) .light এবং .dark অ্যাপিয়ারেন্সের জন্য Asset Catalog থেকে স্বয়ংক্রিয়ভাবে বিভিন্ন মান লোড করে। শুধু Assets.xcassets এ দুটি ভেরিয়েন্ট (Any Appearance + Dark Appearance) সহ একটি রঙ সংজ্ঞায়িত করুন, এবং UIKit নিজে থেকেই সঠিক রঙ নির্বাচন করবে। ডায়নামিক সিস্টেম রঙ (UIColor.systemBackground, .label, .secondaryLabel) ইতিমধ্যে ডার্ক মোড সমর্থন করে এবং স্বয়ংক্রিয়ভাবে পরিবর্তিত হয়।
SwiftUI ডার্ক মোডকে বাক্সের বাইরে সমর্থন করে। সমস্ত স্ট্যান্ডার্ড রঙ এবং মডিফায়ার (Color.primary, .background, Color(UIColor.systemBackground)) স্বয়ংক্রিয়ভাবে অভিযোজিত হয়। কাস্টম রঙের জন্য ডায়নামিক UIColor সহ Color(uiColor:) বা @Environment(\.colorScheme) ভেরিয়েবল ব্যবহার করুন। SwiftUI View থিম পরিবর্তনে স্বয়ংক্রিয়ভাবে রিড্র হয়, traitCollectionDidChange কল করার প্রয়োজন ছাড়াই।
struct ThemeView: View {
@Environment(\.colorScheme) var colorScheme
var body: some View {
Text("ডার্ক মোড")
.foregroundColor(colorScheme == .dark ? .white : .black)
.background(colorScheme == .dark ? Color(.systemGray6) : .white)
}
}
Android ডার্ক মোড AppCompat লাইব্রেরি এবং Theme.AppCompat.DayNight থিমের মাধ্যমে বাস্তবায়িত হয়। দিনে হালকা থিম ব্যবহার করা হয়, রাতে — ডার্ক। AppCompatDelegate.setDefaultNightMode() এর মাধ্যমে জোর করে চালু করা হয়: MODE_NIGHT_YES (ডার্ক), MODE_NIGHT_NO (হালকা), MODE_NIGHT_FOLLOW_SYSTEM (সিস্টেম)। রিসোর্স হালকা (res/values/styles.xml) এবং ডার্ক (res/values-night/styles.xml) এ বিভক্ত।
// জোর করে ডার্ক থিম চালু করুন
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// super.onCreate এর আগে সেট করুন
AppCompatDelegate.setDefaultNightMode(
AppCompatDelegate.MODE_NIGHT_YES
)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
// বর্তমান থিম নির্ধারণ করুন
private val isDarkMode: Boolean
get() = (resources.configuration.uiMode and
Configuration.UI_MODE_NIGHT_MASK) ==
Configuration.UI_MODE_NIGHT_YES
}
// AndroidManifest.xml এ নাইট মোড রেজিস্টার করুন
// android:configChanges="uiMode"
Force Dark Mode — Android 10+ এর একটি সিস্টেম বৈশিষ্ট্য যা ডার্ক থিম সমর্থন ছাড়া অ্যাপ্লিকেশনের রঙ স্বয়ংক্রিয়ভাবে উল্টে দেয়। এটি ডেভেলপার অপশনের মাধ্যমে বা থিমে android:forceDarkAllowed="true" অ্যাট্রিবিউটের মাধ্যমে চালু করা হয়। এটি একটি অস্থায়ী সমাধান: প্রোডাকশনের জন্য, আপনাকে values-night এর মাধ্যমে নিজস্ব ডার্ক প্যালেট বাস্তবায়ন করতে হবে, অন্যথায় ভিজুয়াল কোয়ালিটি খারাপ হবে (উল্টানো আইকন, পড়তে কঠিন রঙ)।
Material You (Android 12+) ডিভাইসের ওয়ালপেপার থেকে স্বয়ংক্রিয়ভাবে 5টি মূল রঙ জেনারেট করে: primary, secondary, tertiary, neutral, neutralVariant। প্রতিটি রঙের জন্য হালকা এবং ডার্ক প্যালেট তৈরি করা হয়। ডেভেলপার অ্যাট্রিবিউট ব্যবহার করে: ?attr/colorPrimary, ?attr/colorOnPrimary, ?attr/colorSurface। সিস্টেম নিজেই বর্তমান থিমের জন্য ভেরিয়েন্ট নির্বাচন করে। Dynamic Color Android 12+ এ Material Design 3 (com.google.android.material:material কম্পোনেন্ট) এর সাথে সমর্থিত।
// values/themes.xml — হালকা থিম
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/primary_light</item>
<item name="colorOnPrimary">@color/on_primary_light</item>
</style>
// values-night/themes.xml — ডার্ক থিম
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/primary_dark</item>
<item name="colorOnPrimary">@color/on_primary_dark</item>
</style>
ডার্ক মোড ডিজাইন — শুধু রঙ উল্টানো নয়। Google Material Design খাঁটি কালোর পরিবর্তে গাঢ় ধূসর (#121212) ব্যবহার করার পরামর্শ দেয়। খাঁটি কালো (#000000) সাদা টেক্সটের সাথে খুব বেশি কনট্রাস্ট তৈরি করে, যা হ্যালো প্রভাব (অক্ষরের চারপাশে আলোর আভা) সৃষ্টি করে। এলিমেন্টের উচ্চতা রঙের মাধ্যমে প্রকাশ করা হয়: এলিমেন্ট যত উঁচু, তার ব্যাকগ্রাউন্ড তত হালকা। ব্যাকগ্রাউন্ডের উপরে কার্ড — #1E1E1E, ডায়ালগ — #2D2D2D, নেভিগেশন প্যানেল — #383838।
রঙের কনট্রাস্ট ডার্ক মোডে লাইট মোডের তুলনায় কম হওয়া উচিত। Material Design সুপারিশ করে: প্রাইমারি টেক্সট — সাদা (#FFFFFF) 87% অস্বচ্ছতা সহ, সেকেন্ডারি — 60%, ডিসেবলড — 38%। অ্যাকসেন্ট রঙ কম স্যাচুরেটেড হওয়া উচিত: যদি হালকা থিমে primary = #6200EE হয়, তাহলে ডার্কে — #BB86FC (হালকা, মিউট বেগুনি)। WCAG 2.1 অনুযায়ী, সাধারণ টেক্সটের জন্য ন্যূনতম কনট্রাস্ট 4.5:1 উভয় থিমেই বজায় রাখতে হবে।
| এলিমেন্ট | লাইট মোড | ডার্ক মোড | কনট্রাস্ট |
|---|---|---|---|
| স্ক্রিন ব্যাকগ্রাউন্ড | #FFFFFF | #121212 | — |
| কার্ড | #F5F5F5 | #1E1E1E | এলিভেশন 1dp |
| প্রাইমারি টেক্সট | #000000 87% | #FFFFFF 87% | 15.8:1 |
| সেকেন্ডারি টেক্সট | #000000 60% | #FFFFFF 60% | 9.0:1 |
| প্রাইমারি রঙ | #6200EE | #BB86FC | 7.2:1 |
ছবি এবং আইকন ডার্ক থিমে আলাদাভাবে পরিচালনার প্রয়োজন। স্বচ্ছতা সহ আইকনগুলিকে হালকা রঙে রিকলার করতে হবে। উজ্জ্বল ব্যাকগ্রাউন্ড সহ ফটোগ্রাফ চোখ ধাঁধিয়ে দিতে পারে — উজ্জ্বলতা 20-30% কমানো বা আধা-স্বচ্ছ ওভারলে যোগ করার পরামর্শ দেওয়া হয়। লোগো এবং ব্র্যান্ড এলিমেন্টের জন্য, ডার্ক ব্যাকগ্রাউন্ডের জন্য সংস্করণ ব্যবহার করুন। iOS Asset Catalog এবং Android VectorDrawable হালকা এবং ডার্ক থিমের জন্য আলাদা রিসোর্স সমর্থন করে।
থিমের মধ্যে নির্বাচন ব্যবহারের শর্ত, কন্টেন্টের ধরন এবং ব্যবহারকারীর পছন্দের উপর নির্ভর করে। Nielsen Norman Group (2020) এর একটি গবেষণায় দেখা গেছে: সাধারণ আলোতে, লাইট মোড 15-20% বেশি পড়ার গতি প্রদান করে। তবে, কম আলোর অবস্থায়, ডার্ক মোড চোখের ক্লান্তি হ্রাস করে এবং পঠনযোগ্যতা উন্নত করে। বড় পরিমাণ টেক্সট (নিবন্ধ, ডকুমেন্ট) সহ ইন্টারফেসের জন্য, লাইট মোড সাধারণত পছন্দনীয়।
বিদ্যুৎ খরচ — OLED এ ডার্ক মোডের জন্য একটি মূল যুক্তি। Google (2019) অনুযায়ী, OLED স্ক্রিনে ডার্ক থিমে YouTube হালকা থিমের তুলনায় 43% কম শক্তি খরচ করে। Google Maps — 32%। ইন্টারফেস যত উজ্জ্বল এবং স্ক্রিনের উজ্জ্বলতার মাত্রা যত বেশি, সাশ্রয় তত বেশি। LCD স্ক্রিনে সাশ্রয় 5% এর বেশি নয়। ব্যবহারকারীদের জন্য যারা উজ্জ্বল রোদে বাইরে অ্যাপ্লিকেশন নিয়ে কাজ করেন, লাইট মোড একমাত্র পঠনযোগ্য বিকল্প হিসাবে রয়ে গেছে।
| মানদণ্ড | ডার্ক মোড | লাইট মোড |
|---|---|---|
| উজ্জ্বল আলোতে পঠনযোগ্যতা | কম (গাঢ় ব্যাকগ্রাউন্ডে ঝলক) | উচ্চ (সর্বোচ্চ কনট্রাস্ট) |
| অন্ধকারে চোখের ক্লান্তি | কম | উচ্চ (উজ্জ্বল আলো) |
| OLED বিদ্যুৎ খরচ | কম (-60% পর্যন্ত) | উচ্চ |
| LCD বিদ্যুৎ খরচ | সমান (±5%) | সমান (±5%) |
| রঙ ধারণা | বিকৃত (কম স্যাচুরেশন) | প্রাকৃতিক |
| অভিযোজন | অভ্যস্ত হতে সময় লাগে | চোখের জন্য প্রাকৃতিক |
IT Sectr সুপারিশ — আমরা সুইচিং অপশন সহ উভয় থিম বাস্তবায়ন করি: সিস্টেম (সিস্টেম অনুসরণ), ডার্ক, লাইট। অটো-সুইচিং একমাত্র বিকল্প হওয়া উচিত নয় — ব্যবহারকারী দিনে ডার্ক থিম (মাইগ্রেনের জন্য) বা রাতে লাইট থিম (পড়ার জন্য) চাইতে পারেন। আমাদের প্রকল্পগুলিতে, আমরা প্রোফাইল সেটিংসে থিম সুইচ যুক্ত করি এবং পছন্দ মনে রাখি। প্রিমিয়াম কন্টেন্ট (ফটো, ভিডিও) সহ অ্যাপ্লিকেশনের জন্য, প্রয়োগের আগে থিম প্রিভিউ করার পরামর্শ দেওয়া হয়।
সচরাচর জিজ্ঞাসিত প্রশ্ন
হ্যাঁ, OLED স্ক্রিনে সাশ্রয় 60% পর্যন্ত পৌঁছাতে পারে (Google, Pixel, 2019)। ইন্টারফেস যত উজ্জ্বল, সাশ্রয় তত বেশি। LCD স্ক্রিনে, পার্থক্য ন্যূনতম — 5% পর্যন্ত, কারণ ম্যাট্রিক্স ব্যাকলাইট পিক্সেল রঙ থেকে স্বাধীনভাবে কাজ করে। যদি ব্যবহারকারী প্রধানত সাদা এলিমেন্ট সহ একটি অ্যাপ্লিকেশন সক্রিয়ভাবে ব্যবহার করেন, তাহলে ডার্ক মোড সর্বাধিক প্রভাব দেয়।
ডার্ক মোড — ডার্ক ইন্টারফেস স্কিমের সাধারণ ধারণা। Material You Dynamic Themes (Android 12+) — একটি বাস্তবায়ন যা ডিভাইসের ওয়ালপেপার থেকে স্বয়ংক্রিয়ভাবে ডার্ক প্যালেট জেনারেট করে। ব্যবহারকারী ডার্ক থিম জোর করে চালু করতে পারেন, এবং Material You নির্দিষ্ট ডার্ক রঙ ব্যবহার করার পরিবর্তে একটি ব্যক্তিগতকৃত প্যালেটে রঙ সামঞ্জস্য করবে।
সেটিংস → ডিসপ্লে ও ব্রাইটনেস → অ্যাপিয়ারেন্স এ যান এবং «ডার্ক» নির্বাচন করুন। প্রোগ্রামেটিকভাবে: AppDelegate এ window.overrideUserInterfaceStyle = .dark সেট করুন। সময়সূচী দ্বারা স্বয়ংক্রিয় সুইচিং (সূর্যাস্ত/সূর্যোদয় বা কাস্টম সময়) ও উপলব্ধ, যা সারা দিন ধরে থিমের মধ্যে মসৃণ রূপান্তর অনুমতি দেয়।
forceDarkMode (Android 10+) — নিজস্ব সমর্থন ছাড়া অ্যাপ্লিকেশনে ডার্ক থিম জোর করে চালু করার একটি সিস্টেম অপশন। Android স্বয়ংক্রিয়ভাবে স্ক্রিনের রঙ উল্টে দেয়। মানসম্পন্ন ডার্ক থিমের জন্য, ডেভেলপারকে values-night এর মাধ্যমে নিজস্ব প্যালেট বাস্তবায়ন করতে হবে এবং forceDarkAllowed নিষ্ক্রিয় করতে হবে।
সিস্টেম ডার্ক মোড iOS 13 (সেপ্টেম্বর 2019) এবং Android 10 (সেপ্টেম্বর 2019) এ আবির্ভূত হয়েছিল। তার আগে, ডেভেলপাররা নিজেরাই ডার্ক থিম বাস্তবায়ন করতেন। 2026 সাল পর্যন্ত, App Store এবং Google Play এ 80% এর বেশি শীর্ষ অ্যাপ্লিকেশন ডার্ক মোড সমর্থন করে, এবং Apple ও Google এটিকে একটি বাধ্যতামূলক অপশন হিসাবে সুপারিশ করে।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন