تنفيذ الرموز التكيفية

تحافظ الأيقونات التكيفية على شكل ثابت داخل الجهاز ولكنها تختلف من جهاز لآخر مع أصل رمز واحد فقط يقدمه المطور. بالإضافة إلى ذلك، تدعم الأيقونات طبقتين (المقدمة والخلفية) يمكن استخدامهما للحركة لتوفير متعة بصرية للمستخدمين.

يوفر منفذو الأجهزة قناعًا للجهاز الذي سيحدد شكل جميع الرموز الموجودة على الجهاز. سيتم استخدام هذا الرمز على أي سطح لواجهة مستخدم للنظام يستخدم أيقونات Launcher (على سبيل المثال، Launcher والنظرة العامة والإعدادات وورقة المشاركة).

الأمثلة والمصادر

أمثلة التعليمات البرمجية:

  • 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 لتعريف المسار . هذا التنسيق لـ PathData هو ما تدعمه الرسوميات المتجهة لنظام Android أيضًا.

يجب أن يكون هذا المسار محدبًا ويجب أن يحترم المنطقة الآمنة (66/71 = 91%) ضمن حدود العرض. يتم فرض ذلك في أحد اختبارات CTS.

إذا قررت استخدام دائرة كقناع للنظام الأساسي، فتأكد أيضًا من تراكب config_useRoundIcon = true. إذا لم يكن الأمر كذلك، فقم بتعيين قيمة التكوين هذه على خطأ أو لا تحدد قيمة التكوين هذه.

واجهة برمجة تطبيقات الأيقونة التكيفية

تظهر واجهة برمجة التطبيقات (API) لفئة 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 (النظام الأساسي/الحزم/التطبيقات/Launcher3) تطبيق مرجعي يوضح كيفية تحقيق التأثير في O-MR1.

تصديق

للتحقق من صحة التنفيذ، بعد تجاوز القناع الذي يعجبهم، تحقق مما إذا تم عرض الرموز بشكل صحيح في Launcher3 والإعدادات والنظرة العامة والإعدادات. يمكنك أيضًا تشغيل AdaptiveIconDrawableTest.java وAdaptiveIconMaskTest.java داخل رسومات CTS TestCase لاختبار التنفيذ.

يمكن العثور على حالة الاختبار اليدوي الموصى بها على: النظام الأساسي/التطوير/العينات/AdaptiveIconSample/.

مشاكل معروفة

تتضمن المشكلات المعروفة ما يلي:

  • أيقونات ضبابية، اعتمادًا على كيفية تعريف مسار القناع.
  • أيقونات الاختصار المكبرة إذا كان مطورو التطبيقات لا يستخدمون أسلوب Icon.createWithAdaptiveBitmap() ، أو لا يستخدمون هذه الطريقة بشكل صحيح. لكي تعمل هذه الطريقة بشكل صحيح، يجب أن تكون الصورة النقطية التي تم تمريرها مبطنة بنسبة 25% على الجوانب الأربعة.

ويمكن معالجة هذه القضايا على النحو التالي:

  • يجب تعريف القناع بنظام الإحداثيات [0, 100] × [0, 100].
  • تأكد من أن الصور المستخدمة للأيقونات التكيفية (أيقونات المشغل والاختصارات) تحتوي على حشوة كافية (25%) على الجوانب الأربعة.