एंड्रॉइड 12 से शुरू होकर, मटेरियल यू डिज़ाइन एंड्रॉइड ओएस में अभिव्यक्ति और तरलता पर केंद्रित है, जिसका लक्ष्य उपयोगकर्ताओं को उनकी आवश्यकताओं के अनुरूप एकल, सामंजस्यपूर्ण अनुभव बनाने और स्वामित्व में मदद करना है। एक Android भागीदार के रूप में, आपको निम्नलिखित क्षेत्रों में अपने Android उपकरणों में आपके द्वारा डिज़ाइन की गई सामग्री को शामिल करने के लिए प्रोत्साहित किया जाता है:
- गतिशील रंग
- गति
- विजेट
गतिशील रंग
डायनामिक रंग आपके द्वारा डिज़ाइन किए गए मटेरियल का केंद्रबिंदु है और एंड्रॉइड की बहु-वर्षीय रणनीति का एक महत्वपूर्ण हिस्सा है जो अपने उपयोगकर्ताओं के लिए सरल और गहरा अनुकूलन लाता है जैसा कि कोई अन्य डिवाइस नहीं करता है। आपके द्वारा प्रदान की जाने वाली सामग्री:
उपयोगकर्ताओं और डेवलपर्स के लिए किसी भी एंड्रॉइड डिवाइस में वैयक्तिकरण की एक सुसंगत, समृद्ध कहानी उपलब्ध है।
एंड्रॉइड ओईएम को सिस्टम यूआई और प्रथम-पक्ष ऐप्स को इस तरह से नवीनीकृत करने का अवसर मिलता है जो उनके हार्डवेयर और ब्रांड रंग, मेक और रूप के अनुरूप हो।
गतिशील रंग का लाभ उठाने के लिए, उपयोगकर्ताओं को अपने सॉफ़्टवेयर की पेशकश के एक महत्वपूर्ण भाग के रूप में Android 12 मटेरियल यू रंग निष्कर्षण कहानी का उपयोग करें। डिवाइस पर, एओएसपी में मौजूद रंग निष्कर्षण तर्क का उपयोग करें, विशेष रूप से वह तर्क जो एकल वॉलपेपर या थीम स्रोत रंग लेता है और इसे 65 रंग एपीआई के माध्यम से आउटपुट करता है। गतिशील रंग आवश्यकताओं के लिए, गतिशील रंग का उपयोग करना देखें।
पूर्ण गतिशील रंग प्रवाह में चार चरण शामिल हैं, जैसा कि नीचे दिखाया गया है:
चित्र 1. सामग्री आप गतिशील रंग प्रवाह
उपयोगकर्ता OEM पिकर के माध्यम से वॉलपेपर या थीम बदलता है।
उपयोगकर्ता निम्न में से एक का चयन करता है:
डिवाइस थीम. चयनित होने पर, एंड्रॉइड स्वचालित रूप से एकल स्रोत रंग चुनता है जो आवश्यकताओं को पूरा करता है।
नया वॉलपेपर + थीम। चयनित होने पर, AOSP लॉजिक स्वचालित रूप से चयनित वॉलपेपर से एकल स्रोत रंग चुनता है।
AOSP तर्क के अनुसार, AOSP एकल स्रोत रंग को 5 टोनल पैलेटों में विस्तारित करता है, जिनमें से प्रत्येक 13 टोनल रंग वेरिएंट के साथ होता है, जो फिर 65 रंग विशेषताओं को पॉप्युलेट करता है।
ऐप यूआई 65 रंग विशेषताओं का उपयोग इस तरह से करता है जो एंड्रॉइड ऐप इकोसिस्टम में सुसंगत है। आपको डिवाइस सिस्टम यूआई और OEM-विशिष्ट ऐप्स के लिए समान रंग पैलेट का उपयोग करने के लिए प्रोत्साहित किया जाता है।
एंड्रॉइड 12 पैच
वॉलपेपर रंग निष्कर्षण के लिए एंड-टू-एंड तर्क प्राप्त करने के लिए और डिवाइस को 65-रंग एपीआई को पारिस्थितिकी तंत्र के अनुरूप भरने में सक्षम करने के लिए, अपने एंड्रॉइड 12 कार्यान्वयन में निम्नलिखित पैच शामिल करें:
अनिवार्य
दृढ़तापूर्वक अनुशंसित
- बूट रंग sysprops सेट करते समय दौड़ की स्थिति ठीक करें।
- विषय परिवर्तन के बारे में ओवरले को सूचित करने की अनुमति दें
- बूट रंग sysprops सेट करते समय दौड़ की स्थिति ठीक करें (राउंड 2)
- फ़ीचरफ़्लैग को फ़्लैग पैकेज में ले जाएँ।
- बहु-उपयोगकर्ता थीम समर्थन को सही ढंग से लागू करें
- रिबूट के बाद गायब निर्दिष्ट वॉलपेपर रंग विकल्प को ठीक करें
- तृतीयक रंग की गणना करने में त्रुटि ठीक करें
- बैकग्राउंड ऐप्स को थीम बदलने की अनुमति न दें
ThemePicker पर कस्टम रंग निर्दिष्ट करना
यदि आप AOSP ThemePicker ऐप का उपयोग कर रहे हैं, तो निम्नलिखित दोनों शर्तें पूरी होने पर वॉलपेपरपिकर ऐप रंग अनुभाग दिखाता है:
-
frameworks/base/packages/SystemUI/res/values/flags.xml
परflag_monet
true
है। - पैकेज नाम के साथ एक सिस्टम स्टब एपीके को
packages/apps/ThemePicker/res/values/override.xml
फ़ाइल मेंthemes_stub_package
में परिभाषित किया गया है।
स्टब एपीके प्रारूप
इस APK का एक नमूना संस्करण packages/apps/ThemePicker/themes
में पाया जा सकता है।
इस एपीके में केवल संसाधन होने चाहिए, जिसमें उपलब्ध मूल रंगों और उनके नामों का विवरण हो।
स्टब में निम्नलिखित प्रारूप के साथ res/xml
के अंतर्गत एक XML फ़ाइल होनी चाहिए:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="color_bundles">
<item>color1</item>
<item>color2</item>
<item>color3</item>
<item>color4</item>
</array>
<string name="bundle_name_color1">Blue</string>
<string name="bundle_name_color2">Red</string>
<string name="bundle_name_color3">Yellow</string>
<string name="bundle_name_color4">Green</string>
</resources>
इस फ़ाइल में, color_bundles
के भीतर प्रत्येक item
एक अलग नाम होता है, जब तक कि नीचे दी गई स्ट्रिंग को bundle_name_ item
नाम दिया गया हो।
प्रत्येक रंग के लिए एक bundle_name_ item
स्ट्रिंग होनी चाहिए, जिसमें प्रत्येक रंग के लिए एक वर्णनात्मक नाम होना चाहिए। इनका अनुवाद संबंधित अनुवादित स्ट्रिंग्स को res/values- language code
निर्देशिकाओं में जोड़कर किया जा सकता है।
वास्तविक रंग मान या तो एक ही XML पर या निम्न प्रारूप के साथ एक अलग संसाधन XML फ़ाइल पर हो सकते हैं:
<resources>
<color name="color_primary_color1">#0000FF</color>
<color name="color_secondary_color1">#0000FF</color>
<color name="color_primary_color2">#ff0000</color>
<color name="color_secondary_color2">#ff0000</color>
<color name="color_primary_color3">#ffff00</color>
<color name="color_secondary_color3">#ffff00</color>
<color name="color_primary_color4">#00ff00</color>
<color name="color_secondary_color4">#00ff00</color>
</resources>
रंग बंडल सरणी में प्रत्येक आइटम के लिए, एक color_primary_ item
और एक color_secondary_ item
प्रविष्टि होनी चाहिए (और दोनों रंग एक ही रंग के होने चाहिए)। इन color
प्रविष्टियों के मान मूल रंग अनुभाग में दिखाए जाने वाले प्रत्येक रंग के लिए वास्तविक रंग कोड हैं।
चरण 1: उपयोगकर्ता थीम अनुभव बनाएं
थीम पिकर वह जगह है जहां उपयोगकर्ता नई मटेरियल यू वैयक्तिकरण क्षमताओं के साथ जुड़ते हैं और संभावित रूप से रंग विकल्पों या प्रीसेट के बीच चयन करते हैं। चूंकि यह आपके उत्पाद और उपयोगकर्ता जनसांख्यिकीय के अनुरूप है, आप थीम पिकर या वॉलपेपर पिकर के उपयोग के माध्यम से उपयोगकर्ताओं को एक समृद्ध वैयक्तिकरण और रंग अनुभव प्रदान कर सकते हैं।
- वॉलपेपर पिकर का उपयोग करते समय, वॉलपेपर रंग निष्कर्षण डिफ़ॉल्ट रूप से चालू होता है। हालाँकि, आप उपयोगकर्ता को अधिक विकल्प प्रदान करने के लिए पिकर में कुछ अनुकूलन कर सकते हैं।
चरण 2: वॉलपेपर रंग को स्रोत रंग में निकालें
वॉलपेपर रंग निष्कर्षण को सक्षम करने के लिए, ऊपर सूचीबद्ध एंड्रॉइड 12 पैच को चुनें (यह कार्यक्षमता भविष्य के एओएसपी रिलीज में डिफ़ॉल्ट रूप से सक्षम होगी)। AOSP तर्क जो वॉलपेपर निष्कर्षण को ट्रिगर करता frameworks/base/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
पर, ThemeOverlayController#mOnColorsChangedListener
पर, WallpaperManager#onWallpaperColorsChanged
के माध्यम से शुरू होता है। हम सतत विकास अनुभव सुनिश्चित करने के लिए असंशोधित एओएसपी तर्क का उपयोग करने की सलाह देते हैं।
डिफ़ॉल्ट रूप से, तर्क उच्चतम आवृत्ति रंग चुनता है जो उपयोग के लिए उपयुक्त है। एल्गोरिदम द्वारा लौटाए गए अन्य स्रोत रंगों का लाभ उठाने और उन रंगों को थीम पिकर में उपयोगकर्ताओं के सामने प्रस्तुत करने के लिए, ColorScheme#getSeedColors(wallpaperColors: WallpaperColors)
उपयोग करें।
उपयोग के लिए उपयुक्त होने के लिए, एक स्रोत रंग (चाहे वॉलपेपर से निकाला गया हो या उपयोगकर्ता द्वारा चुने गए प्रीसेट से) का न्यूनतम CAM16 क्रोमा मान 5 होना चाहिए; यह सुनिश्चित करता है कि जब स्रोत रंग को एक रंग से 65 टोनल रंगों में परिवर्तित किया जाता है तो वह सूक्ष्म गहरे टोन से प्रभावित नहीं होता है और उपयोगकर्ता की पसंद का प्रतिनिधि बना रहता है। CAM16 में रंगों को पढ़ने और संशोधित करने के लिए, Cam#fromInt
या Cam#getInt
उपयोग करें।
गैर-गतिशील रंग पैलेट का उपयोग करना उन उपकरणों के लिए जो वॉलपेपर रंग निष्कर्षण का समर्थन नहीं करते हैं, आप अभी भी यह सुनिश्चित कर सकते हैं कि Google ऐप्स और तृतीय-पक्ष ऐप्स जो गतिशील रंग का समर्थन करते हैं, निम्न कार्य करके अच्छे दिखें:
frameworks/base/packages/SystemUI/res/values/flags.xml
परflag_monet
अक्षम करके डिफ़ॉल्ट सामग्री पैलेट का उपयोग करें।- सुनिश्चित करें कि उपयोगकर्ता अभी भी प्रीसेट थीम पिकर का उपयोग करके अपने ओएस को वैयक्तिकृत कर सकते हैं।
चरण 3: स्रोत रंग को रंगीन एपीआई में विस्तारित करें
पिछले चरण से प्राप्त एकल स्रोत रंग का उपयोग करके, एंड्रॉइड 5 अद्वितीय टोनल पैलेट (उच्चारण 1-3, तटस्थ 1-2) उत्पन्न करता है, प्रत्येक पैलेट में 13 रंग शामिल होते हैं, और प्रत्येक रंग अलग-अलग चमक मान (0 से 1000) सहित होता है। कुल 65 रंग. एंड्रॉइड 12 पैच में प्रदान किया गया तर्क इस रंग विस्तार को सही ढंग से लागू करता है; नीचे दिए गए विवरण कार्यान्वयन का वर्णन करते हैं।
डेवलपर स्थिरता के लिए, 5 टोनल पैलेट (एक्सेंट1, एक्सेंट2, एक्सेंट3, न्यूट्रल1, न्यूट्रल2) और उनके संबंधित 13 रंग नीचे लिखे अनुसार CAM16 क्रोमा और ह्यू मानों में संबंधित परिवर्तनों के साथ एकल स्रोत रंग पर आधारित होने चाहिए:
- क्रोमा: "16" का प्रयोग करें
- रंग: स्रोत के समान
- क्रोमा: "32" का प्रयोग करें
- रंग: 60 डिग्री सकारात्मक घुमाएँ
- क्रोमा: "4" का प्रयोग करें
- रंग: स्रोत के समान
- क्रोमा: "8" का प्रयोग करें
- रंग: स्रोत के समान
सीटीएस में ल्यूमिनेंस और ह्यू एपीआई कॉल को मान्य करने के लिए परीक्षण शामिल हैं। चलाने के लिए, atest SystemPalette
उपयोग करें।
चरण 4: ऐप्स और सिस्टम यूआई में गतिशील रंगों का उपयोग करें
किसी डिवाइस पर गतिशील रंग सेट होने के बाद, ऐप्स रंगों का उपयोग करने के लिए सामग्री दिशानिर्देशों का पालन करते हैं। तीसरे पक्ष के ऐप्स को अपनाने के लिए सामग्री दिशानिर्देश 26 अक्टूबर, 2021 तक material.io पर जारी होने वाले हैं। सिस्टम यूआई और प्रथम-पक्ष ऐप्स के लिए, हम पूरे उपयोगकर्ता अनुभव में गतिशील रंगों को इस तरह से एकीकृत करने की दृढ़ता से अनुशंसा करते हैं जो आपके हार्डवेयर और ब्रांड के साथ फिट हो और आपको अपने उपकरणों को अलग करने में मदद करे।
सामान्य गतिशील रंग मार्गदर्शन के लिए, निम्नलिखित देखें:
ऐप्स और सिस्टम यूआई में अग्रभूमि तत्वों के लिए उच्चारण रंगों का उपयोग करें:
@android:color/system_accent1_0 … 1000 // most-used foreground color group @android:color/system_accent2_0 … 1000 // alternate accent, used for surfaces @android:color/system_accent3_0 … 1000 // playful, analogous color
ऐप्स और सिस्टम यूआई में पृष्ठभूमि तत्वों के लिए तटस्थ रंगों का उपयोग करें:
@android:color/system_neutral1_0 … 1000 // most-used background color group @android:color/system_neutral2_0 … 1000 // used for higher-elevation surfaces
सामग्री आप रंगों को कैसे मैप करते हैं और SysUI में एपीआई का उपयोग कैसे किया जाता है, इस बारे में अधिक जानकारी के लिए, अतिरिक्त संसाधन देखें।
चरण 5: अपने AOSP वॉलपेपरपिकर कार्यान्वयन में गतिशील रंग विकल्प जोड़ें
Android 13 और उच्चतर के लिए निर्माण करें
एंड्रॉइड 13 से शुरू होकर, android.theme.customization.accent_color
हटा दिया गया है। विभिन्न रंग वेरिएंट का समर्थन करने के लिए एक नई विशेषता android.theme.customization.theme_style
जोड़ी गई है। वर्तमान में हमारे पास कोडबेस में चार प्रकार हैं:
TONAL_SPOT = Default Material You theme since Android S.
VIBRANT = Theme where accent 2 and 3 are analogous to accent 1.
EXPRESSIVE = Highly chromatic theme.
SPRITZ = Desaturated theme, almost grayscale.
इन्हें Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
पर भेजा जाता है, जैसा कि नीचे JSON में दिखाया गया है:
{
"android.theme.customization.system_palette":"B1611C",
"android.theme.customization.theme_style":"EXPRESSIVE"
}
Android 12 और उससे पहले के संस्करण के लिए बनाएं
कस्टम थीम पिकर का उपयोग करते समय, डिवाइस को निम्नलिखित प्रारूप में एक JSON फ़ाइल प्रदान करके Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
पर एक वैध स्रोत रंग भेजना होगा (जहां 746BC1
एक उदाहरण वैध स्रोत रंग है):
{
"android.theme.customization.system_palette":"746BC1",
"android.theme.customization.accent_color":"746BC1"
}
ऐसा करने से वॉलपेपर रंग निकालना बंद हो जाता है (चरण 2) और सीधे दिए गए स्रोत रंग को 65 रंग विशेषताओं (चरण 3) में विस्तारित कर देता है।
चरण 6: टिकट दाखिल करें
सिस्टम एकीकरण के अलावा, आपको एक टिकट दाखिल करना होगा और हमें अपना ब्रांड नाम ( Build.MANUFACTURER
) बताना होगा। चूँकि अधिकांश तृतीय-पक्ष ऐप्स गतिशील रंग दिखाने के लिए एंड्रॉइड के लिए सामग्री घटकों का उपयोग कर रहे हैं, हम यह बताने के लिए एक हार्डकोडेड अनुमति सूची का उपयोग कर रहे हैं कि किन उपकरणों ने गतिशील रंग टोनल पैलेट सुविधा को एकीकृत किया है।
गति
द्रव गति उपकरणों को आधुनिक और प्रीमियम महसूस कराती है। डेवलपर के विश्वास और खुशी को बनाने और बनाए रखने के लिए, ओवरस्क्रॉल और रिपल द्रव गति के दो प्रमुख भाग हैं जिन्हें सुसंगत दिखने और महसूस करने की आवश्यकता है।
अपने OS में ओवरस्क्रॉल का उपयोग करना
एंड्रॉइड 12 में व्यू स्ट्रेच के रूप में अधिक प्रतिक्रियाशील, गतिशील ओवरस्क्रॉल मोशन शामिल है, जो तब दिखाया जाता है जब उपयोगकर्ता किसी सूची के किनारे से आगे स्क्रॉल करने का प्रयास करता है। एक उदाहरण नीचे दिया गया है:
चित्र 2. एंड्रॉइड 12 ओवरस्क्रॉल प्रभाव, जैसा कि सेटिंग्स में दिखाया गया है
डेवलपर स्थिरता के लिए, सुनिश्चित करें कि आपके डिवाइस पर समग्र ओवरस्क्रॉल प्रभाव निम्नलिखित के समान है:
उन उपकरणों पर जो
ActivityManager.isHighEndGfx()
के लिए सत्य लौटाते हैं, ओवरस्क्रॉल प्रभाव स्क्रीन का गैर-रेखीय खिंचाव है (जैसा कि ऊपर दिखाया गया है)।कम-प्रदर्शन वाले उपकरणों पर, खिंचाव प्रभाव को एक रैखिक खिंचाव (सिस्टम पर भार कम करने के लिए) तक सरल बनाया जाता है।
प्रथम-पक्ष ऐप्स में ओवरस्क्रॉल का उपयोग करना
कस्टम दृश्यों का उपयोग करते समय, आपको कुछ ऐप्स और सिस्टम यूआई में बदलाव करने की आवश्यकता हो सकती है जो स्ट्रेच प्रभाव का उपयोग करते हैं।
स्ट्रेच ओवरस्क्रॉल का समर्थन करने के लिए, नवीनतम लाइब्रेरी में अपग्रेड करें:
-
androidx.recyclerview:recyclerview:1.3.0-alpha01
RecyclerView
के लिए -
NestedScrollView
औरEdgeEffectCompat
के लिएandroidx.core:core:1.7.0-alpha01
-
ViewPager
के लिएandroidx.viewpager:viewpager:1.1-alpha01
-
EdgeEffect
का उपयोग करने वाले कस्टम लेआउट के लिए, निम्नलिखित UX परिवर्तनों पर विचार करें:स्ट्रेच ओवरस्क्रॉल के साथ, उपयोगकर्ताओं को लेआउट के स्ट्रेच होने के दौरान उसकी सामग्री के साथ इंटरैक्ट नहीं करना चाहिए। उपयोगकर्ताओं को केवल खिंचाव में ही हेरफेर करना चाहिए और उदाहरण के लिए, सामग्री में एक बटन दबाने में सक्षम नहीं होना चाहिए।
जब उपयोगकर्ता
EdgeEffect
एनीमेशन के दौरान सामग्री को छूते हैं, तो उन्हें एनीमेशन को पकड़ना चाहिए और खिंचाव में हेरफेर करने की अनुमति दी जानी चाहिए। वर्तमान पुल मानEdgeEffectCompat.getDistance()
से उपलब्ध है।पुल मान में हेरफेर करने और उपभोग की गई राशि वापस करने के लिए,
onPullDistance()
का उपयोग करें। यह डेवलपर्स को स्ट्रेचिंग से स्क्रॉलिंग तक आसानी से संक्रमण करने की अनुमति देता है क्योंकि उंगली प्रारंभिक स्थिति से सामग्री को हटा देती है।नेस्टेड स्क्रॉलिंग के साथ काम करते समय, यदि सामग्री खिंची हुई है, तो स्ट्रेच को नेस्टेड सामग्री से पहले स्पर्श गति का उपभोग करना चाहिए, अन्यथा जब उंगली खिंचाव जारी करने के बजाय दिशा बदलती है तो नेस्टिंग स्क्रॉल कर सकती है।
ओवरस्क्रॉल पर विवरण के लिए, स्क्रॉल जेस्चर को एनिमेट करें देखें।
अपने ओएस में रिपल (टच फीडबैक) का उपयोग करना
एंड्रॉइड 12 में टैप डाउन पर उपयोगकर्ताओं को फीडबैक प्रदान करने के लिए एक नरम, अधिक सूक्ष्म स्पर्श तरंग शामिल है।
चित्र 3. एंड्रॉइड 12 रिपल प्रभाव, एक नरम भरण एनीमेशन के साथ
डेवलपर की पूर्वानुमेयता और बेहतरीन उपयोगकर्ता अनुभव प्रदान करने के लिए, सुनिश्चित करें कि आपके डिवाइस पर तरंग प्रभाव ऊपर दिखाए गए उदाहरण के समान है। हालाँकि आपको रिपल प्रभावों का समर्थन करने के लिए किसी विशिष्ट एकीकरण चरण को निष्पादित करने की आवश्यकता नहीं है, आपको अपने कार्यान्वयन में पेश किए गए किसी भी अनपेक्षित प्रतिगमन की जांच करने के लिए अपने उपकरणों पर प्रभाव का परीक्षण करना चाहिए।
विजेट
विजेट एंड्रॉइड डिवाइस के प्रमुख घटक हैं। एंड्रॉइड 12 में नए एपीआई और एपीआई क्षमताएं शामिल हैं जिनका सभी ओईएम को समर्थन करना चाहिए।
अपने ओएस में, विजेट लेआउट, आकार और सॉफ़्टवेयर पैरामीटर (उदाहरण के लिए, गोलाकार कोने का आकार) से संबंधित डेवलपर एपीआई का समर्थन करें। आपके कार्यान्वयन को एपीआई के माध्यम से पैरामीटर प्रदान करने में विजेट्स का सही ढंग से समर्थन करना चाहिए और यह सुनिश्चित करना चाहिए कि विजेट उपयोगकर्ता द्वारा बड़े आकार और कॉन्फ़िगर करने योग्य हैं।
अपने ऐप्स में, जहां संभव हो नए प्रथम-पक्ष विजेट को अपडेट करने या बनाने के लिए नई एपीआई क्षमताओं का लाभ उठाएं। अपने दायरे में आने वाले सभी प्रथम-पक्ष ऐप विजेट के लिए, नीचे दी गई डेवलपर चेकलिस्ट देखें।
- प्राथमिकता मंच की सिफारिशों पर आधारित है।
- किसी अनुशंसा पर विवरण के लिए, परिवर्तन कॉलम में दिए गए लिंक का अनुसरण करें।
क्षेत्र परिवर्तन कार्यान्वयन प्राथमिकता घरेलू अनुभव में सुधार करें स्केलेबल पूर्वावलोकन जोड़ें पी1 एक विजेट विवरण जोड़ें पी1 विजेट्स को वैयक्तिकृत करना आसान बनाएं पी2 (वैकल्पिक) सहज संक्रमण सक्षम करें प0 प्रसारण ट्रैम्पोलिन से बचें प0 विजेट दिशानिर्देश अपनाएं विजेट आकार और लेआउट में सुधार करें पी2 गतिशील रंग लागू करें प0 गोल कोनों को लागू करें प0 नए कंपाउंड बटन जोड़ें पी2 मौजूदा विजेट कोड को सरल बनाएं रिमोटव्यू संग्रह को सरल बनाएं पी2 रिमोटव्यू रनटाइम को सरल बनाएं पी2
अतिरिक्त संसाधन
SysUI रंग का उपयोग
(एक्सेंट1 = ए1, एक्सेंट2 = ए2, एक्सेंट3 = ए3, न्यूट्रल1 = एन1, न्यूट्रल2 = एन2)
चित्र 4. सिस्टम यूआई में गतिशील रंग का उपयोग
सामग्री लाइब्रेरी रंग विशेषता अद्यतन
मटेरियल विशिष्ट दृश्यों को रंग प्रदान करने के लिए उपयोग की जाने वाली रंग भूमिकाएँ बनाकर आगामी रिलीज़ में अपनी थीम विशेषताओं को अपडेट करेगा।
रंग भूमिका | एंड्रॉइड थीम विशेषता | लाइट थीम गतिशील रंग | डार्क थीम गतिशील रंग |
---|---|---|---|
प्राथमिक | रंगप्राथमिक | system_accent1_600 | system_accent1_200 |
प्राथमिक पर | कलरऑनप्राइमरी | system_accent1_0 | system_accent1_800 |
माध्यमिक | रंगमाध्यमिक | system_accent2_600 | system_accent2_200 |
माध्यमिक पर | कलरऑनसेकेंडरी | system_accent2_0 | system_accent2_800 |
गलती | रंगत्रुटि | एन/ए (लाल_600) | एन/ए (लाल_200) |
त्रुटि पर | रंगऑनत्रुटि | एन/ए (सफ़ेद) | एन/ए (लाल_900) |
पृष्ठभूमि | एंड्रॉइड: कलरबैकग्राउंड | system_neutral1_10 | सिस्टम_न्यूट्रल1_900 |
पृष्ठभूमि पर | कलरऑनबैकग्राउंड | सिस्टम_न्यूट्रल1_900 | सिस्टम_न्यूट्रल1_100 |
सतह | रंग सतह | system_neutral1_10 | सिस्टम_न्यूट्रल1_900 |
सतह पर | रंगऑनसतह | सिस्टम_न्यूट्रल1_900 | सिस्टम_न्यूट्रल1_100 |
सामग्री निम्नलिखित संकेतकों के साथ अपनी स्थिति विशेषताओं को अद्यतन करेगी:
रंग भूमिका | एंड्रॉइड थीम विशेषता | लाइट थीम गतिशील रंग | डार्क थीम गतिशील रंग |
---|---|---|---|
प्राथमिक राज्य सामग्री | रंगप्राथमिकराज्यसामग्री | system_accent1_700 | system_accent1_200 |
प्राथमिक राज्य परत | कलरप्राइमरीस्टेटलेयर | system_accent1_600 | system_accent1_300 |
माध्यमिक राज्य सामग्री | colorSecondaryStateContent | system_accent2_700 | system_accent2_200 |
द्वितीयक राज्य परत | कलरसेकेंडरीस्टेटलेयर | system_accent2_600 | system_accent2_300 |
प्राथमिक राज्य सामग्री पर | कलरऑनप्राइमरीस्टेटकंटेंट | system_accent1_0 | system_accent1_800 |
प्राथमिक राज्य परत पर | कलरऑनप्राइमरीस्टेटलेयर | system_accent1_900 | system_accent1_800 |
माध्यमिक राज्य सामग्री पर | colorOnSecondaryStateContent | system_accent2_0 | system_accent2_800 |
सेकेंडरी स्टेट लेयर पर | कलरऑनसेकेंडरीस्टेटलेयर | system_accent2_900 | system_accent2_800 |
प्राथमिक कंटेनर राज्य सामग्री पर | colorOnPrimaryContainerStateContent | system_accent1_900 | system_accent1_900 |
प्राथमिक कंटेनर राज्य परत पर | कलरऑनप्राइमरीकंटेनरस्टेटलेयर | system_accent1_900 | system_accent1_900 |
माध्यमिक कंटेनर राज्य सामग्री पर | colorOnSecondaryContainerStateContent | system_accent2_900 | system_accent2_900 |
सेकेंडरी कंटेनर स्टेट लेयर पर | colorOnSecondaryContainerStateLayer | system_accent2_900 | system_accent2_900 |
तृतीयक कंटेनर राज्य सामग्री पर | colorOnTertiaryContainerStateContent | system_accent3_900 | system_accent3_900 |
तृतीयक कंटेनर राज्य परत पर | colorOnTertiaryContainerStateLayer | system_accent3_900 | system_accent3_900 |
सतही स्थिति सामग्री पर | colorOnSurfaceStateContent | सिस्टम_न्यूट्रल1_900 | सिस्टम_न्यूट्रल1_100 |
सतह राज्य परत पर | कलरऑनसरफेसस्टेटलेयर | सिस्टम_न्यूट्रल1_900 | सिस्टम_न्यूट्रल1_100 |
सरफेस वेरिएंट स्टेट कंटेंट पर | colorOnSurfaceVariantStateContent | system_neutral2_700 | system_neutral2_200 |
सरफेस वैरिएंट स्टेट लेयर पर | colorOnSurfaceVariantStateLayer | system_neutral2_700 | system_neutral2_200 |
त्रुटि स्थिति सामग्री | colorErrorStateContent | लाल800 | लाल200 |
पूछे जाने वाले प्रश्न
रंग निकालना
एक बार जब कोई उपयोगकर्ता वॉलपेपर बदलता है, तो क्या रंग स्वचालित रूप से निकाला जाता है या इसे कहीं से ट्रिगर करने की आवश्यकता होती है?
एंड्रॉइड 12 पैच के साथ, वॉलपेपर रंग निष्कर्षण डिफ़ॉल्ट रूप से चालू है।
ThemeOverlayController.java
ThemeOverlayController#mOnColorsChangedListener
और WallpaperManager#onWallpaperColorsChanged
के साथ तर्क को ट्रिगर करता है।
लाइव वॉलपेपर या वीडियो वॉलपेपर के लिए, क्या हम जान सकते हैं कि कलर एक्सट्रैक्शन कब स्क्रीन से रंग लेता है? कुछ उपयोगकर्ता अंतिम फ़्रेम से रंग चाह सकते हैं क्योंकि यह अधिकांश समय दिखाई देता है।
जब उपयोगकर्ता वॉलपेपर सेट करता है या स्क्रीन पावर चक्र के बाद ( WallpaperEngine#notifyColorsChanged
के जवाब में) रंग निष्कर्षण शुरू हो जाता है। अंतिम WallpaperColors
इवेंट (लाइव वॉलपेपर से) उपयोगकर्ता द्वारा स्क्रीन बंद करने और इसे फिर से चालू करने के बाद लागू किया जाता है।
थीम/वॉलपेपर पिकर
मैं थीम पिकर को उपयोगकर्ताओं के लिए उच्चतम आवृत्ति रंग की तुलना में एकाधिक स्रोत रंग दिखाने में कैसे सक्षम करूं? क्या निष्कर्षण तर्क से उन रंगों को प्राप्त करने का कोई तरीका है?
हाँ। अपने थीम पिकर में, आप ColorScheme#getSeedColors(wallpaperColors: WallpaperColors)
उपयोग कर सकते हैं।
पिक्सेल नामों पर थीम वाले आइकन के रूप में एक सुविधा है। क्या यह आपके द्वारा साझा किए गए तीन पैच में शामिल है? OEM इसे कैसे लागू कर सकते हैं?
नहीं, थीम वाले आइकन बीटा में हैं और एंड्रॉइड 12 में उपलब्ध नहीं हैं।
क्या रंग निकालने और चयन सुविधाओं को सक्षम करके Google वॉलपेपर ऐप का उपयोग करने का कोई तरीका है?
हाँ। इस पृष्ठ पर पहले वर्णित एकीकरण चरणों का पालन करके सुविधाओं को Google वॉलपेपर ऐप के नवीनतम संस्करण में लागू किया जा सकता है।
अधिक जानकारी के लिए अपने टीएएम से संपर्क करें।
क्या Google ऐप या स्रोत कोड साझा कर सकता है ताकि OEM अपने सेटिंग मेनू पर डायनामिक रंग पूर्वावलोकन का अपना संस्करण लागू कर सकें, जो Google के वॉलपेपर पिकर ऐप पर दिखाए गए पूर्वावलोकन अनुभाग के समान दिखता है?
पूर्वावलोकन प्रस्तुत करने वाली मुख्य कक्षाएं WallpaperPicker2
और Launcher3
हैं।
वॉलपेपर पूर्वावलोकन स्क्रीन WallpaperSectionController
है।
रंग बदलने के बाद पूर्वावलोकन कैसे लागू करें, जैसा कि Google वॉलपेपर ऐप में दिखाया गया है?
वॉलपेपर पिकर ऐप को उम्मीद है कि लॉन्चर से एक ContentProvider
उपलब्ध होगा (एक Launcher3
-आधारित लॉन्चर के पास यह है)। पूर्वावलोकन लॉन्चर में GridCustomizationsProvider
द्वारा प्रदान किया गया है, जिसे पढ़ने के लिए वॉलपेपर और स्टाइल ऐप के लिए लॉन्चर की मुख्य गतिविधि के मेटाडेटा में संदर्भित किया जाना चाहिए। यह सब AOSP के लॉन्चर3 में कार्यान्वित किया गया है और OEM के लिए उपलब्ध है।