अडैप्टिव आइकॉन को लागू करें

अडैप्टिव आइकॉन की मदद से, डिवाइस के इंट्रा-डिवाइस पर एक जैसा आकार मिलता है. हालांकि, ये अलग-अलग डिवाइस के हिसाब से अलग-अलग होते हैं वह डिवाइस हो जिसमें डेवलपर ने सिर्फ़ एक आइकॉन ऐसेट उपलब्ध कराई है. इसके अलावा, आइकॉन दो लेयर (फ़ोरग्राउंड और बैकग्राउंड) की सुविधा देती हैं. इन लेयर का इस्तेमाल करके, ऐप्लिकेशन इस्तेमाल करने वाले लोगों को विज़ुअल तौर पर खुशी दे सकें.

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

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

कोड के उदाहरण:

  • 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 मानक के मुताबिक होते हैं परिभाषा. पाथडेटा के लिए यह फ़ॉर्मैट ऐसा है जिसे Android वेक्टर ड्रॉ किया जा सकता है मदद भी मिल सकती है.

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

अगर आपको प्लैटफ़ॉर्म मास्क के तौर पर सर्कल का इस्तेमाल करना है, तो इमेज को ओवरले करना न भूलें config_useRoundIcon = सही है. अगर नहीं है, तो इस कॉन्फ़िगरेशन वैल्यू को 'गलत' पर सेट करें या ऐसा न करें इस कॉन्फ़िगरेशन मान को दर्ज करें.

अडैप्टिव आइकॉन एपीआई

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();
   
}

रेफ़रंस फ़ाइल को लागू करना

इनमें से किसी भी उदाहरण पर स्टैटिक अडैप्टिव आइकॉन रेंडर करने के लिए कुछ भी करने की ज़रूरत नहीं है सिस्टम के यूज़र इंटरफ़ेस (यूआई) के सरफ़ेस. जब PackageManager ड्रॉ करने लायक कोई आइटम लौटाता है, तो उसे एक ImageView. इस तरह से, Pre-O प्लैटफ़ॉर्म में आइकॉन पहले ही रेंडर किए जा चुके हैं.

डाइनैमिक मोशन इफ़ेक्ट को रेंडर करने के बारे में जानकारी, Launcher3 (प्लैटफ़ॉर्म/पैकेज/ऐप्लिकेशन/लॉन्चर3) में, लागू करने के लिए एक रेफ़रंस दिखाया जाएगा, जो O-MR1 में प्रभाव कैसे प्राप्त करें.

पुष्टि करें

लागू करने की पुष्टि करने के लिए, अपनी पसंद के मास्क को बदलने के बाद, देखें अगर लॉन्चर3, सेटिंग, खास जानकारी, और सेटिंग में आइकॉन सही तरीके से रेंडर हुए हैं. आप AdaptiveIconDrawableTest.java और AdaptiveIconMaskTest.java भी चला सकते हैं लागू करने की जांच करने के लिए ग्राफ़िक CTS TestCase के अंदर.

मैन्युअल तौर पर टेस्ट केस का सुझाव यहां दिया गया है: प्लैटफ़ॉर्म/डेवलपमेंट/सैंपल/AdaptiveIconSample/.

पहले से मालूम समस्याएं

आम तौर पर होने वाली समस्याओं में ये शामिल हैं:

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

इन समस्याओं को नीचे बताए गए तरीके से हल किया जा सकता है:

  • मास्क [0, 100] x [0, 100] कोऑर्डिनेट सिस्टम में तय किया जाना चाहिए.
  • पक्का करें कि अडैप्टिव आइकॉन (लॉन्चर आइकॉन , शॉर्टकट) के लिए इस्तेमाल की गई इमेज चारों तरफ़ काफ़ी पैडिंग (25%) है.