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

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

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

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

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

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

واجهة برمجة التطبيقات 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. هذه هي الطريقة التي يتم بها عرض الرموز بالفعل على منصات ما قبل التشغيل.

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

التحقُّق

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

يمكن العثور على حالة اختبار يدوية يُنصح بها في: Platform/development/عيّنات/AdaptiveIconSample/.

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

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

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

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

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