
गहरे रंग वाली थीम, Android 10 (एपीआई लेवल 29) और उसके बाद वाले वर्शन में उपलब्ध है. इसके ये फ़ायदे हैं:
- इसमें बैटरी की खपत काफ़ी कम हो जाती है. यह इस बात पर निर्भर करता है कि डिवाइस का इस्तेमाल कहां किया जा रहा है किया जाता है.
- इससे कम दृष्टि वाले लोगों और संवेदनशील सेहत वाले लोगों को ज़्यादा आसानी से दिखते हैं चमकदार रोशनी.
- इससे कम रोशनी वाली जगहों पर डिवाइस इस्तेमाल करना आसान हो जाता है.
गहरे रंग वाली थीम, डिवाइस पर चलने वाले Android सिस्टम के यूज़र इंटरफ़ेस (यूआई) और ऐप्लिकेशन पर लागू होती है.
Android 10 और उसके बाद के वर्शन में, गहरे रंग वाली थीम चालू करने के तीन तरीके हैं:
- गहरे रंग वाली थीम चालू करने के लिए, सेटिंग > डिसप्ले > थीम पर जाकर, सिस्टम सेटिंग का इस्तेमाल करें.
- सूचना ट्रे से थीम बदलने के लिए क्विक सेटिंग टाइल का इस्तेमाल करें, चालू करें.
- Pixel डिवाइसों पर गहरे रंग वाली थीम चालू करने के लिए, बैटरी सेवर मोड चालू करें समय. अन्य डिवाइसों पर यह सुविधा शायद काम न करे.
वेबव्यू का इस्तेमाल करके, वेब पर आधारित कॉन्टेंट पर गहरे रंग वाली थीम लागू करने के निर्देश पाने के बारे में जानकारी कॉम्पोनेंट के लिए, वेबव्यू में डार्क वेब कॉन्टेंट देखें.
अपने ऐप्लिकेशन में गहरे रंग वाली थीम का इस्तेमाल करना
गहरे रंग वाली थीम का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन की थीम को DayNight
थीम से इनहेरिट करने के लिए सेट करें. आम तौर पर, यह थीम res/values/styles.xml
में मिलती है:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
मटीरियल कॉम्पोनेंट गहरे रंग वाला मोड भी इस्तेमाल किया जा सकता है थीम:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
इससे, ऐप्लिकेशन की मुख्य थीम को सिस्टम से कंट्रोल किए जाने वाले नाइट मोड फ़्लैग से जोड़ दिया जाता है. साथ ही, नाइट मोड चालू होने पर ऐप्लिकेशन को डिफ़ॉल्ट रूप से गहरे रंग वाली थीम मिलती है.
थीम और स्टाइल
हार्डकोड किए गए रंगों या आइकॉन का इस्तेमाल, हल्के रंग वाली थीम के तहत न करें. इसके बजाय, थीम एट्रिब्यूट या रात में काम करने वाले संसाधनों का इस्तेमाल करें.
डार्क थीम के लिए, थीम के दो एट्रिब्यूट सबसे ज़्यादा अहम होते हैं:
?android:attr/textColorPrimary
: अलग-अलग कामों के लिए इस्तेमाल होने वाला टेक्स्ट रंग. हां हल्के रंग वाली थीम में पास-काला और गहरे रंग वाली थीम में नियर-व्हाइट. इसमें 'बंद है' स्थिति शामिल है.?attr/colorControlNormal
: सामान्य तौर पर इस्तेमाल होने वाले आइकॉन का रंग. इसमें शामिल है बंद है.
हमारा सुझाव है कि आप Material Design के कॉम्पोनेंट इस्तेमाल करें. इसकी वजह यह है कि इसकी मदद से, रंगों के थीम वाले सिस्टम का इस्तेमाल करके, सही रंगों को आसानी से ऐक्सेस किया जा सकता है. जैसे, थीम एट्रिब्यूट ?attr/colorSurface
और ?attr/colorOnSurface
. अपनी थीम में इन एट्रिब्यूट को पसंद के मुताबिक बनाया जा सकता है.
ऐप्लिकेशन में थीम बदलना
ऐप्लिकेशन के चलने के दौरान, उपयोगकर्ताओं को ऐप्लिकेशन की थीम बदलने की अनुमति दी जा सकती है. नीचे दिए गए ये सुझाए गए विकल्प हैं:
- हल्का
- गहरे रंग वाली थीम
- सिस्टम डिफ़ॉल्ट (सुझाया गया डिफ़ॉल्ट विकल्प)
ये विकल्प सीधे AppCompat.DayNight
मोड पर मैप होते हैं:
लाइट:
MODE_NIGHT_NO
.गहरे रंग वाला मोड:
MODE_NIGHT_YES
.सिस्टम डिफ़ॉल्ट:
MODE_NIGHT_FOLLOW_SYSTEM
.
थीम बदलने के लिए, ये काम करें:
एपीआई लेवल 31 और उसके बाद के वर्शन पर,
UiModeManager#setApplicationNightMode
ताकि सिस्टम को यह बताया जा सके कि आपके ऐप्लिकेशन की थीम कौनसी है. इससे सिस्टम, स्प्लैश स्क्रीन के दौरान थीम से मैच कर पाता है.एपीआई लेवल 30 और उससे पहले के लेवल पर, थीम स्विच करने के लिए,
AppCompatDelegate.setDefaultNightMode()
का इस्तेमाल करें.
गहरे रंग वाली थीम को ज़बरदस्ती चालू करें
Android 10, Force डार्क की एक सुविधा उपलब्ध कराता है, जिससे डेवलपर को ये काम करने में मदद मिलती है
DayNight
थीम साफ़ तौर पर सेट किए बिना, गहरे रंग वाली थीम को आसानी से लागू किया जा सकता है.
गहरे रंग वाली थीम को ज़बरदस्ती लागू करने की सुविधा, हल्के रंग वाली थीम वाले ऐप्लिकेशन के हर व्यू का विश्लेषण करती है. साथ ही, स्क्रीन पर दिखने से पहले ही गहरे रंग वाली थीम को अपने-आप लागू कर देती है. आप 'फ़ोर्स डार्क' को मिला-जुलाकर इस्तेमाल कर सकते हैं और इसे स्थानीय तौर पर लागू करने से, कम समय में डार्क सुविधा मिलती है थीम.
android:forceDarkAllowed="true"
को
गतिविधि की थीम. यह एट्रिब्यूट सभी सिस्टम पर सेट किया जाता है- और
AndroidX वाली हल्के रंग वाली थीम, जैसे कि Theme.Material.Light
. जब आप इस्तेमाल करें
गहरे रंग वाली थीम लागू करें, अपने ऐप्लिकेशन की अच्छी तरह से जांच करें, और ज़रूरत के मुताबिक व्यू को उपलब्ध न कराएं.
अगर आपका ऐप्लिकेशन गहरे रंग वाली थीम का इस्तेमाल करता है, जैसे कि Theme.Material
), तो 'गहरे रंग वाली थीम को ज़बरदस्ती लागू करें' सुविधा लागू नहीं होती. इसी तरह, अगर आपके ऐप्लिकेशन की थीम किसी DayNight
थीम से इनहेरिट की जाती है, तो फ़ोर्स
थीम अपने-आप स्विच होने की वजह से, गहरे रंग वाली थीम लागू नहीं होती.
किसी व्यू पर गहरे रंग को ज़बरदस्ती चालू करने की सुविधा बंद करें
कुछ व्यू के लिए, ज़बरदस्ती डार्क मोड को कंट्रोल किया जा सकता है. ऐसा करने के लिए,
android:forceDarkAllowed
लेआउट एट्रिब्यूट या इसके साथ
setForceDarkAllowed()
.
वेब कॉन्टेंट
वेब पर आधारित कॉन्टेंट में गहरे रंग वाली थीम इस्तेमाल करने के बारे में जानकारी पाने के लिए, Darken Web पर जाएं वेबव्यू में कॉन्टेंट शामिल होता है. वेबव्यू पर डार्क थीम लागू करने का उदाहरण देखने के लिए, GitHub पर वेबव्यू का डेमो देखें .
सबसे सही तरीके
यहां दिए गए सेक्शन में, डार्क थीम लागू करने के सबसे सही तरीके बताए गए हैं.
सूचनाएं और विजेट
ऐसे यूज़र इंटरफ़ेस (यूआई) प्लैटफ़ॉर्म के लिए जिन्हें आप डिवाइस पर दिखाते हैं, लेकिन सीधे तौर पर कंट्रोल नहीं करते हैं, तो तो पक्का करें कि आप जो भी व्यू इस्तेमाल करें, वे होस्ट ऐप्लिकेशन की थीम को दिखाएं. उदाहरण के लिए, सूचनाएं और लॉन्चर विजेट.
सूचनाएं
सिस्टम से मिलने वाले सूचना टेंप्लेट का इस्तेमाल करें, जैसे कि MessagingStyle
. यह
का मतलब है कि सिस्टम सही व्यू स्टाइल लागू करने के लिए ज़िम्मेदार है.
विजेट और कस्टम सूचना व्यू
अगर आपका ऐप्लिकेशन, सूचना के कॉन्टेंट के कस्टम व्यू का इस्तेमाल करता है या लॉन्चर विजेट के लिए, कॉन्टेंट की जांच लाइट और डार्क, दोनों थीम में करें.
इस तरह की कुछ सामान्य गलतियों पर ध्यान दिया जाना चाहिए:
- यह मानते हुए कि बैकग्राउंड का रंग हमेशा हल्का है.
- टेक्स्ट के रंग को हार्डकोड करना.
- टेक्स्ट के डिफ़ॉल्ट रंग का इस्तेमाल करते समय, हार्डकोड बैकग्राउंड का रंग सेट करें.
- ड्रॉ करने लायक आइकॉन का इस्तेमाल करना, जो स्टैटिक रंग हो.
इन सभी मामलों में, हार्डकोड के बजाय सही थीम एट्रिब्यूट का इस्तेमाल करें रंग.
लॉन्च स्क्रीन
अगर आपके ऐप्लिकेशन में कस्टम लॉन्च स्क्रीन है, तो आपको उसमें बदलाव करना पड़ सकता है, ताकि यह यह चुनी गई थीम को दिखाता है.
किसी भी हार्डकोड किए गए रंग को हटाएं, जैसे कि बैकग्राउंड के रंग को प्रोग्राम की मदद से सेट करें
सफ़ेद. इसके बजाय, ?android:attr/colorBackground
थीम एट्रिब्यूट का इस्तेमाल करें.
कॉन्फ़िगरेशन में बदलाव
जब सिस्टम सेटिंग या AppCompat की मदद से ऐप्लिकेशन की थीम बदलती है, तो इससे uiMode
कॉन्फ़िगरेशन में बदलाव होता है. इसका मतलब है कि गतिविधियां अपने-आप फिर से बन जाती हैं.
कुछ मामलों में, ऐसा हो सकता है कि कॉन्फ़िगरेशन में किए गए बदलावों को किसी ऐप्लिकेशन से मैनेज किया जाए. उदाहरण के लिए, हो सकता है कि कोई वीडियो चल रहा हो और आप कॉन्फ़िगरेशन में बदलाव करने से पहले कुछ समय इंतज़ार करना चाहें.
कोई ऐप्लिकेशन, गहरे रंग वाली थीम को लागू करने की सुविधा को मैनेज कर सकता है. इसके लिए, यह एलान करना ज़रूरी है कि हर Activity
, uiMode
कॉन्फ़िगरेशन में बदलाव कर सकता है:
<activity
android:name=".MyActivity"
android:configChanges="uiMode" />
जब कोई Activity
एलान करता है कि वह कॉन्फ़िगरेशन में किए गए बदलावों को मैनेज करता है, तो
onConfigurationChanged()
तरीका को तब कॉल किया जाता है, जब थीम में कोई बदलाव होता है.
यह देखने के लिए कि मौजूदा थीम क्या है, ऐप्लिकेशन इस तरह के कोड को चला सकते हैं:
val currentNightMode = configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK when (currentNightMode) { Configuration.UI_MODE_NIGHT_NO -> {} // Night mode is not active, we're using the light theme. Configuration.UI_MODE_NIGHT_YES -> {} // Night mode is active, we're using dark theme. }
int currentNightMode = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK; switch (currentNightMode) { case Configuration.UI_MODE_NIGHT_NO: // Night mode is not active, we're using the light theme break; case Configuration.UI_MODE_NIGHT_YES: // Night mode is active, we're using dark theme break; }