استخدام الرموز التكيُّفية

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

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

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

أمثلة على الرموز البرمجية:

  • 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. وإذا لم يكن الأمر كذلك، اضبط قيمة الضبط هذه على خطأ أو لا حدِّد قيمة الضبط هذه.

Adaptive Icon 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. وهذه هي الطريقة التي يتم بها عرض الرموز في الإصدارات السابقة من نظام التشغيل Android.

في ما يتعلّق بعرض تأثير الحركة الديناميكية، سيتوفّر في Launcher3 (platform/packages/apps/Launcher3) تنفيذ مرجعي يعرض كيفية تحقيق التأثير في O-MR1.

التحقُّق

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

يمكن العثور على نموذج اختبار يدوي مقترَح على الرابط: platform/development/samples/AdaptiveIconSample/.

المشاكل المعروفة

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

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

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

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