अनुकूली चिह्न लागू करें

एडेप्टिव आइकन एक सुसंगत आकार इंट्रा-डिवाइस बनाए रखते हैं लेकिन डेवलपर द्वारा प्रदान किए गए केवल एक आइकन एसेट के साथ डिवाइस से डिवाइस में भिन्न होते हैं। इसके अतिरिक्त, आइकन दो परतों (अग्रभूमि और पृष्ठभूमि) का समर्थन करते हैं जिनका उपयोग उपयोगकर्ताओं को दृश्य आनंद प्रदान करने के लिए गति के लिए किया जा सकता है।

डिवाइस कार्यान्वयनकर्ता एक डिवाइस मास्क प्रदान करते हैं जो डिवाइस पर सभी आइकन का आकार तय करेगा। इस आइकन का उपयोग किसी भी सिस्टम यूआई सतहों पर किया जाएगा जो लॉन्चर आइकन (उदाहरण के लिए, लॉन्चर, अवलोकन, सेटिंग्स और शेयर शीट) का उपयोग करते हैं।

उदाहरण और स्रोत

कोड उदाहरण:

  • platform/development/samples/AdaptiveIconSample/

डेवलपर दस्तावेज़ीकरण:

सोर्स कोड:

  • platform/frameworks/base/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java

कार्यान्वयन

किसी प्लेटफ़ॉर्म पर आइकन का आकार बदलने के लिए, एक स्ट्रिंग framework/base/core/res/res/values/config.xml में इस प्रकार ओवरले करें:

<!-- Specifies the path that is used by AdaptiveIconDrawable class to crop launcher icons. -->
    <string name="config_icon_mask" translatable="false">"M50,0L100,0 100,100 0,100 0,0z"</string>

स्ट्रिंग का प्रारूप और वाक्यविन्यास पथ परिभाषा के लिए W3, SVG मानक का पालन करता है। पाथडाटा के लिए यह प्रारूप एंड्रॉइड वेक्टर ड्रॉएबल्स द्वारा भी समर्थित है।

यह पथ उत्तल होना चाहिए और दृश्य सीमा के भीतर सुरक्षित क्षेत्र (66/71 = 91%) का सम्मान करना चाहिए। इसे सीटीएस परीक्षणों में से एक में लागू किया गया है।

यदि आप प्लेटफ़ॉर्म मास्क के रूप में एक सर्कल का उपयोग करने का निर्णय लेते हैं, तो config_useRoundIcon = true को ओवरले करना भी सुनिश्चित करें। यदि नहीं, तो इस कॉन्फ़िगरेशन मान को ग़लत सेट करें या इस कॉन्फ़िगरेशन मान को निर्दिष्ट न करें।

अनुकूली चिह्न एपीआई

AdaptiveIconDrawable क्लास के लिए एपीआई नीचे दिखाया गया है:

package  android.graphics.drawable;
    public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback {
    method public Drawable getBackground();
    method public Drawable getForeground();
    method public Path getIconMask();
    method public Region getSafeZone();
    method public float getExtraInsetFraction();
    method public int getOpacity();
    method public void invalidateDrawable(Drawable);
    method public void scheduleDrawable(Drawable, Runnable, long);
    method public void setAlpha(int);
    method public void setColorFilter(ColorFilter);
    method public void setOpacity(int);
    method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
    }
public class Icon extends Parceleable {
    method public Bitmap createWithAdaptiveBitmap();
    }

संदर्भ कार्यान्वयन

किसी भी सिस्टम यूआई सतह पर स्थिर अनुकूली आइकन प्रस्तुत करने के लिए कुछ भी करने की आवश्यकता नहीं है। जब पैकेजमैनेजर एक ड्रॉएबल लौटाता है, तो बस उसे एक इमेज व्यू से बांध दें। इस प्रकार प्री-ओ प्लेटफ़ॉर्म में आइकन पहले से ही प्रस्तुत किए गए हैं।

गतिशील गति प्रभाव प्रदान करने के संबंध में, लॉन्चर3 (प्लेटफ़ॉर्म/पैकेज/ऐप्स/लॉन्चर3) में एक संदर्भ कार्यान्वयन होगा जो दिखाएगा कि ओ-एमआर1 में प्रभाव कैसे प्राप्त किया जाए।

मान्यकरण

कार्यान्वयन को मान्य करने के लिए, उनकी पसंद के मुखौटे को ओवरराइड करने के बाद, देखें कि लॉन्चर 3, सेटिंग्स, अवलोकन और सेटिंग्स में आइकन सही ढंग से प्रस्तुत किए गए हैं या नहीं। कार्यान्वयन का परीक्षण करने के लिए आप ग्राफिक्स सीटीएस टेस्टकेस के अंदर एडाप्टिवआईकॉनड्रॉएबलटेस्ट.जावा और एडाप्टिवआईकॉनमास्कटेस्ट.जावा भी चला सकते हैं।

अनुशंसित मैन्युअल परीक्षण केस यहां पाया जा सकता है: प्लेटफ़ॉर्म/डेवलपमेंट/सैंपल्स/एडेप्टिवआइकॉनसैंपल/।

ज्ञात पहलु

ज्ञात मुद्दों में निम्नलिखित शामिल हैं:

  • धुंधले चिह्न, यह इस बात पर निर्भर करता है कि मास्क पथ कैसे परिभाषित किया गया है।
  • यदि ऐप डेवलपर Icon.createWithAdaptiveBitmap() विधि का उपयोग नहीं करते हैं, या इस विधि का ठीक से उपयोग नहीं करते हैं, तो ज़ूम-इन शॉर्टकट आइकन। इस विधि के ठीक से काम करने के लिए, बिटमैप में पारित को चारों तरफ 25% पैड किया जाना चाहिए।

इन मुद्दों को इस प्रकार संबोधित किया जा सकता है:

  • मास्क को [0, 100] x [0, 100] समन्वय प्रणाली में परिभाषित किया जाना चाहिए।
  • सुनिश्चित करें कि अनुकूली आइकन (लॉन्चर आइकन, शॉर्टकट) के लिए उपयोग की जाने वाली छवियों में चारों तरफ पर्याप्त पैडिंग (25%) हो।