Dark Mode (qorongʻu mavzu) — ekran foni qorongʻi (toʻq kulrang yoki qora), matn va elementlar esa ochiq rangda boʻlgan interfeys rang sxemasi. Dark Mode zaif yoritishda koʻz yukini kamaytiradi, OLED displeylarda batareya zaryadini tejaydi (Google, 2019 maʼlumotlariga koʻra 60% gacha) va fotofobiyasi boʻlgan foydalanuvchilar uchun foydalanish imkoniyati talablariga javob beradi. iOS 13 va Android 10 da Dark Mode tizim opsiyasiga aylandi — foydalanuvchi qorongʻu mavzuni global ravishda yoqadi, ilova esa uni avtomatik qabul qiladi. Batafsil Android-ning qorongʻu mavzu boʻyicha rasmiy hujjatlarida.
Asosiy maʼlumotlar
Dark Mode — ekran foni qorongʻi (odatda Android da #121212, iOS da #1C1C1E), matn va interfeys elementlari ochiq rangda boʻlgan rang sxemasi. Oddiy rang inversiyasidan farqli oʻlaroq, sifatli Dark Mode maxsus tanlangan palitradan foydalanadi: toza qora oʻrniga toʻq kulrang fon (halo effektini kamaytiradi), past toʻyinganlikdagi urgʻu ranglari va yumshoq soyalar. Dark Mode ning tizimli qoʻllab-quvvatlashi iOS 13 (sentyabr 2019) va Android 10 da (sentyabr 2019) paydo boʻldi.
Asosiy joriy etish sababi — foydalanuvchi qulayligi. Zaif yoritishda (kechqurun, qorongʻida) yorqin oq ekran koʻz zoʻriqishiga sabab boʻladi va bosh ogʻrigʻiga olib kelishi mumkin. Dark Mode oʻqish qobiliyatini yoʻqotmasdan ekran yorqinligini kamaytiradi. Fotofobiya yoki yorugʻlikka sezgirligi boʻlgan foydalanuvchilar uchun qorongʻu mavzu tanlov emas, balki ilovadan qulay foydalanishning yagona imkoniyatidir. Android Developers maʼlumotlariga koʻra, Android foydalanuvchilarining 30% dan ortigʻi doimiy ravishda qorongʻu mavzuni yoqadi.
Dark Mode batareyani tejaydi OLED ekranlarda. LCD dan farqli oʻlaroq, orqa yoritish doimo yoniq boʻlganida, OLED piksellari mustaqil ravishda yoritiladi. Qorongʻu rang pikselning oʻchirilganligini anglatadi — energiya isteʼmoli pasayadi. Google (Android Developers Blog, 2019) maʼlumotlariga koʻra, OLED ekranli Pixel da 100% yorqinlikda Dark Mode energiya isteʼmolini ochiq mavzuga nisbatan 60% ga kamaytiradi. LCD ekranlarda tejamkorlik minimal (taxminan 3–5%), chunki matritsaning orqa yoritilishi piksel rangidan qatʼiy nazar ishlaydi.
Tizimli qoʻllab-quvvatlash Dark Mode bir necha bosqichdan oʻtdi. iOS 13 (2019) UIUserInterfaceStyle orqali global qorongʻu mavzuni taqdim etdi. Android 10 (2019) oʻz qorongʻu mavzusi boʻlmagan ilovalar uchun Force Dark Mode ni qoʻshdi. Android 12 (2021) Material You bilan fon rasmidan avtomatik qorongʻu palitra yaratishni boshladi. iOS 15 (2021) API ni Safari va veb-kontent uchun kengaytirdi. StatCounter (2026) maʼlumotlariga koʻra, App Store va Google Play dagi top-100 ilovalarning 82% i Dark Mode ni qoʻllab-quvvatlaydi.
| Platforma | Versiya | Yil | Asosiy yangilik |
|---|---|---|---|
| iOS | 13 | 2019 | UIUserInterfaceStyle, traitCollection.userInterfaceStyle |
| Android | 10 (Q) | 2019 | Force Dark Mode, AppCompat DayNight mavzusi |
| iOS | 15 | 2021 | Veb-kontent va Safari uchun qorongʻu mavzu |
| Android | 12 | 2021 | Material You Dynamic Themes avtomatik qorongʻu palitra yaratish |
iOS Dark Mode API UITraitEnvironment protokoliga asoslanadi. Har bir UIViewController va UIView traitCollection.userInterfaceStyle xususiyatiga ega boʻlib, u .unspecified, .light yoki .dark boʻlishi mumkin. Tizim mavzusi oʻzgarganda iOS traitCollectionDidChange(_:) metodini chaqiradi. Dasturchi ushbu metoddagi ranglarni yangilashi yoki ochiq va qorongʻu palitra oʻrtasida avtomatik oʻtadigan dinamik ranglardan (UIColor(dynamicProvider:)) foydalanishi kerak.
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
}
}
// Dark Mode ni majburiy yoqish
window.overrideUserInterfaceStyle = .dark
Dinamik ranglar — iOS da Dark Mode ni amalga oshirishning eng yaxshi usuli. UIColor(named:) Asset Catalog dan .light va .dark koʻrinish uchun turli qiymatlarni avtomatik yuklaydi. Assets.xcassets da ikki variant (Any Appearance + Dark Appearance) bilan rangni sozlash kifoya, UIKit oʻzi keraklisini tanlaydi. Dinamik tizim ranglari (UIColor.systemBackground, .label, .secondaryLabel) allaqachon Dark Mode ni qoʻllab-quvvatlaydi va avtomatik oʻzgaradi.
SwiftUI Dark Mode ni qutidan chiqqandayoq qoʻllab-quvvatlaydi. Barcha standart ranglar va modifierlar (Color.primary, .background, Color(UIColor.systemBackground)) avtomatik moslashadi. Maxsus ranglar uchun dinamik UIColor bilan Color(uiColor:) yoki @Environment(\.colorScheme) muhit oʻzgaruvchisidan mavzuni aniq tekshirish uchun foydalaning. SwiftUI View mavzu oʻzgarganda traitCollectionDidChange ni chaqirmasdan avtomatik qayta chiziladi.
struct ThemeView: View {
@Environment(\.colorScheme) var colorScheme
var body: some View {
Text("Dark Mode")
.foregroundColor(colorScheme == .dark ? .white : .black)
.background(colorScheme == .dark ? Color(.systemGray6) : .white)
}
}
Android Dark Mode AppCompat kutubxonasi va Theme.AppCompat.DayNight mavzusi orqali amalga oshiriladi. Kunduzi ochiq mavzu, kechasi esa qorongʻu mavzu ishlatiladi. Majburiy yoqish AppCompatDelegate.setDefaultNightMode() orqali sozlanadi: MODE_NIGHT_YES (qorongʻu), MODE_NIGHT_NO (ochiq), MODE_NIGHT_FOLLOW_SYSTEM (tizim). Resurslar ochiq (res/values/styles.xml) va qorongʻu (res/values-night/styles.xml) ga boʻlinadi.
// Qorongʻu mavzuni majburiy yoqish
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// super.onCreate dan oldin sozlash
AppCompatDelegate.setDefaultNightMode(
AppCompatDelegate.MODE_NIGHT_YES
)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
// Joriy mavzuni aniqlash
private val isDarkMode: Boolean
get() = (resources.configuration.uiMode and
Configuration.UI_MODE_NIGHT_MASK) ==
Configuration.UI_MODE_NIGHT_YES
}
// AndroidManifest.xml da tungi rejimni roʻyxatdan oʻtkazish
// android:configChanges="uiMode"
Force Dark Mode — qorongʻu mavzuni qoʻllab-quvvatlamaydigan ilovalar ranglarini avtomatik teskari oʻgiradigan Android 10+ tizim funksiyasi. Dasturchi sozlamalari yoki mavzudagi android:forceDarkAllowed="true" atributi orqali yoqiladi. Bu vaqtinchalik yechim: ishlab chiqarish uchun values-night orqali oʻz qorongʻu palitrangizni amalga oshirishingiz kerak, aks holda vizual sifat past boʻladi (teskari oʻgirilgan piktogrammalar, yomon oʻqiladigan ranglar).
Material You (Android 12+) qurilma fon rasmidan avtomatik ravishda 5 ta asosiy rang yaratadi: primary, secondary, tertiary, neutral, neutralVariant. Har bir rang uchun ochiq va qorongʻu palitralar yaratiladi. Dasturchi atributlardan foydalanadi: ?attr/colorPrimary, ?attr/colorOnPrimary, ?attr/colorSurface. Tizim joriy mavzu uchun variantni oʻzi tanlaydi. Dynamic Color Material Design 3 bilan Android 12+ da qoʻllab-quvvatlanadi (komponent com.google.android.material:material).
// values/themes.xml — ochiq mavzu
<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 — qorongʻu mavzu
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/primary_dark</item>
<item name="colorOnPrimary">@color/on_primary_dark</item>
</style>
Dark Mode dizayni — oddiy rang inversiyasi emas. Google Material Design toza qora oʻrniga toʻq kulrang (#121212) ishlatishni tavsiya qiladi. Toza qora (#000000) oq matn bilan juda yuqori kontrast yaratib, halo effektiga (harflar atrofida yorugʻlik) sabab boʻladi. Elementlarning balandlik (elevatsiya) darajasi rang orqali aniqlanadi: element qanchalik baland boʻlsa, foni shunchalik ochiq boʻladi. Fon ustidagi kart — #1E1E1E, dialog — #2D2D2D, navigatsiya paneli — #383838.
Rang kontrasti Dark Mode da Light Mode dan past boʻlishi kerak. Material Design tavsiya qiladi: primary matni — oq (#FFFFFF) 87% shaffoflik bilan, secondary — 60%, disabled — 38%. Urgʻu ranglari kamroq toʻyingan boʻlishi kerak: ochiq mavzuda primary = #6200EE boʻlsa, qorongʻuda — #BB86FC (ochiq, yumshoq binafsha). WCAG 2.1 ga koʻra, oddiy matn uchun minimal kontrast 4.5:1 har ikki mavzuda ham saqlanishi kerak.
| Element | Light Mode | Dark Mode | Kontrast |
|---|---|---|---|
| Ekran foni | #FFFFFF | #121212 | — |
| Kart | #F5F5F5 | #1E1E1E | Elevatsiya 1dp |
| Primary matn | #000000 87% | #FFFFFF 87% | 15.8:1 |
| Secondary matn | #000000 60% | #FFFFFF 60% | 9.0:1 |
| Primary rang | #6200EE | #BB86FC | 7.2:1 |
Rasmlar va piktogrammalar qorongʻu mavzuda alohida ishlov berishni talab qiladi. Shaffoflikka ega piktogrammalar ochiq rangga boʻyalishi kerak. Yorqin fonli fotosuratlar koʻzni qamashtiruvchi koʻrinishi mumkin — yorqinlikni 20–30% ga kamaytirish yoki yarim shaffof qoplama qoʻshish tavsiya etiladi. Logotiplar va brend elementlari uchun qorongʻu fon uchun versiyadan foydalaning. iOS Asset Catalog va Android VectorDrawable ochiq va qorongʻu mavzu uchun alohida resurslarni qoʻllab-quvvatlaydi.
Mavzu tanlovi foydalanish shartlariga, kontent turiga va foydalanuvchi afzalliklariga bogʻliq. Nielsen Norman Group (2020) tadqiqoti shuni koʻrsatdiki: normal yoritishda Light Mode oʻqish tezligini 15–20% ga oshiradi. Biroq zaif yoritish sharoitida Dark Mode koʻz charchoqini kamaytiradi va oʻqish qobiliyatini yaxshilaydi. Koʻp miqdorda matnli interfeyslar uchun (maqolalar, hujjatlar) Light Mode odatda afzalroq.
Energiya isteʼmoli — OLED da Dark Mode uchun asosiy argumentdir. Google (2019) maʼlumotlariga koʻra, YouTube qorongʻu mavzuda OLED ekranda ochiq mavzuga nisbatan 43% kam energiya sarflaydi. Google Maps — 32%. Interfeys qanchalik yorqin va ekran yorqinligi qanchalik yuqori boʻlsa, tejamkorlik shunchalik sezilarli. LCD ekranlarda tejamkorlik 5% dan oshmaydi. Ilova bilan ochiq havoda yorqin quyosh ostida koʻp ishlaydigan foydalanuvchilar uchun Light Mode yagona oʻqiladigan variant boʻlib qoladi.
| Mezon | Dark Mode | Light Mode |
|---|---|---|
| Yorqin yorugʻlikda oʻqish qobiliyati | Past (qorongʻu fonda yaltiroqlik) | Yuqori (maksimal kontrast) |
| Qorongʻida koʻz charchoqi | Past | Yuqori (yorqin yorugʻlik) |
| OLED energiya isteʼmoli | Past (60% gacha) | Yuqori |
| LCD energiya isteʼmoli | Bir xil (±5%) | Bir xil (±5%) |
| Ranglarni idrok etish | Oʻzgartirilgan (past toʻyinganlik) | Tabiiy |
| Akkomodatsiya | Koʻnikish uchun vaqt talab etiladi | Koʻz uchun tabiiy |
IT Sectr tavsiyalari — ikkala mavzuni oʻzgartirish imkoniyati bilan amalga oshiramiz: tizim (follow system), qorongʻu, ochiq. Avtomatik oʻtish yagona variant boʻlmasligi kerak — foydalanuvchi kunduzi (migren vaqtida) qorongʻu mavzuni yoki kechasi (oʻqiyotganda) ochiq mavzuni xohlashi mumkin. Loyihalarimizda profil sozlamalarida mavzu kalitini qoʻshamiz va tanlovni eslab qolamiz. Premium kontentli ilovalar uchun (foto, video) qoʻllashdan oldin mavzu oldindan koʻrish tavsiya etiladi.
Tez-tez beriladigan savollar
Ha, OLED ekranlarda tejamkorlik 60% ga yetadi (Google, Pixel, 2019). Interfeys qanchalik yorqin boʻlsa, tejamkorlik shunchalik koʻp. LCD ekranlarda farq minimal — 5% gacha, chunki matritsaning orqa yoritilishi piksel rangidan qatʼiy nazar ishlaydi. Agar foydalanuvchi oq elementlar ustunlik qiladigan ilovadan faol foydalansa, Dark Mode maksimal samara beradi.
Dark Mode — qorongʻu interfeys sxemasining umumiy konsepsiyasi. Material You Dynamic Themes (Android 12+) — qurilma fon rasmidan avtomatik qorongʻu palitra yaratadigan amalga oshirish. Foydalanuvchi qorongʻu mavzuni majburiy yoqishi mumkin, Material You esa sobit qorongʻu ranglardan foydalanish oʻrniga ranglarni shaxsiylashtirilgan palitraga moslashtiradi.
Sozlamalar → Ekran va yorqinlik → Koʻrinish boʻlimida „Qorongʻu" ni tanlang. Dasturiy ravishda: AppDelegate da window.overrideUserInterfaceStyle = .dark ni sozlang. Shuningdek, jadval boʻyicha avtomatik oʻtish mavjud (quyosh botishi/chiqishi yoki moslashtirilgan vaqt) — bu kun davomida mavzular oʻrtasida silliq oʻtish imkonini beradi.
forceDarkMode (Android 10+) — oʻz qoʻllab-quvvatlashiga ega boʻlmagan ilovalarda qorongʻu mavzuni majburiy yoqish tizim opsiyasi. Android ekran ranglarini avtomatik teskari oʻgiradi. Sifatli qorongʻu mavzu uchun dasturchi values-night orqali oʻz palitrasini amalga oshirishi va forceDarkAllowed ni oʻchirishi kerak.
Tizim Dark Mode iOS 13 (sentyabr 2019) va Android 10 da (sentyabr 2019) paydo boʻldi. Bungacha dasturchilar qorongʻu mavzularni oʻzlari amalga oshirishgan. 2026 yilga kelib App Store va Google Play dagi eng yaxshi ilovalarning 80% dan ortigʻi Dark Mode ni qoʻllab-quvvatlaydi, Apple va Google esa uni majburiy variant sifatida tavsiya qiladi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.