অভিযোজিত আইকন প্রয়োগ করুন

অভিযোজিত আইকনগুলি একটি সামঞ্জস্যপূর্ণ আকৃতির ইন্ট্রা-ডিভাইস বজায় রাখে তবে বিকাশকারী দ্বারা প্রদত্ত শুধুমাত্র একটি আইকন সম্পদ সহ ডিভাইস থেকে ডিভাইসে পরিবর্তিত হয়। উপরন্তু, আইকন দুটি স্তর সমর্থন করে (ফোরগ্রাউন্ড এবং ব্যাকগ্রাউন্ড) যা ব্যবহারকারীদের চাক্ষুষ আনন্দ প্রদানের জন্য গতির জন্য ব্যবহার করা যেতে পারে।

ডিভাইস বাস্তবায়নকারীরা একটি ডিভাইস মাস্ক সরবরাহ করে যা একটি ডিভাইসের সমস্ত আইকনের আকার নির্ধারণ করবে। এই আইকনটি যেকোন সিস্টেম UI সারফেসে ব্যবহার করা হবে যা লঞ্চার আইকন ব্যবহার করে (যেমন, লঞ্চার, ওভারভিউ, সেটিংস এবং শেয়ার শীট)।

উদাহরণ এবং উৎস

কোড উদাহরণ:

  • 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-এর জন্য এই বিন্যাসটি অ্যান্ড্রয়েড ভেক্টর ড্রেবল সমর্থন করে।

এই পথটি উত্তল হওয়া উচিত এবং দেখার সীমার মধ্যে নিরাপদ অঞ্চল (66/71 = 91%) সম্মান করা উচিত। এটি সিটিএস পরীক্ষাগুলির একটিতে প্রয়োগ করা হয়।

আপনি যদি প্ল্যাটফর্ম মাস্ক হিসাবে একটি বৃত্ত ব্যবহার করার সিদ্ধান্ত নেন, তাহলে config_useRoundIcon = true ওভারলে করতে ভুলবেন না। যদি না হয়, এই কনফিগার মান মিথ্যা সেট করুন বা এই কনফিগার মান নির্দিষ্ট করবেন না।

অভিযোজিত আইকন API

AdaptiveIconDrawable ক্লাসের API নীচে দেখানো হয়েছে:

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

রেফারেন্স বাস্তবায়ন

যেকোনও সিস্টেম UI সারফেসে স্ট্যাটিক অ্যাডাপ্টিভ আইকন রেন্ডার করার জন্য কিছুই করার দরকার নেই। যখন প্যাকেজ ম্যানেজার একটি অঙ্কনযোগ্য ফেরত দেয়, তখন এটিকে একটি ইমেজভিউতে আবদ্ধ করুন। প্রি-ও প্ল্যাটফর্মগুলিতে ইতিমধ্যে আইকনগুলি এভাবেই রেন্ডার করা হয়েছে।

ডায়নামিক মোশন ইফেক্ট রেন্ডারিং সম্পর্কে, লঞ্চার3 (প্ল্যাটফর্ম/প্যাকেজ/অ্যাপস/লঞ্চার3) এর একটি রেফারেন্স ইমপ্লিমেন্টেশন থাকবে যা দেখায় কিভাবে O-MR1 এ প্রভাব অর্জন করতে হয়।

বৈধতা

বাস্তবায়নকে যাচাই করতে, তাদের পছন্দের মাস্ক ওভাররাইড করার পরে, লঞ্চার3, সেটিংস, ওভারভিউ এবং সেটিংসে আইকনগুলি সঠিকভাবে রেন্ডার করা হয়েছে কিনা তা দেখুন। আপনি বাস্তবায়ন পরীক্ষা করার জন্য গ্রাফিক্স CTS TestCase এর ভিতরে AdaptiveIconDrawableTest.java এবং AdaptiveIconMaskTest.java চালাতে পারেন।

একটি প্রস্তাবিত ম্যানুয়াল টেস্ট কেস এখানে পাওয়া যাবে: প্ল্যাটফর্ম/ডেভেলপমেন্ট/নমুনা/অ্যাডাপ্টিভ আইকন স্যাম্পল/।

পরিচিত সমস্যা

পরিচিত সমস্যাগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • অস্পষ্ট আইকন, মাস্ক পাথ কিভাবে সংজ্ঞায়িত করা হয় তার উপর নির্ভর করে।
  • অ্যাপ বিকাশকারীরা Icon.createWithAdaptiveBitmap() পদ্ধতি ব্যবহার না করলে বা এই পদ্ধতিটি সঠিকভাবে ব্যবহার না করলে জুম-ইন শর্টকাট আইকন। এই পদ্ধতিটি সঠিকভাবে কাজ করার জন্য, বিটম্যাপে পাস করা সমস্ত চার দিকে 25% প্যাড করা উচিত।

এই সমস্যাগুলি নিম্নরূপ সমাধান করা যেতে পারে:

  • মুখোশটি [0, 100] x [0, 100] সমন্বয় ব্যবস্থায় সংজ্ঞায়িত করা উচিত।
  • নিশ্চিত করুন যে অভিযোজিত আইকনগুলির (লঞ্চার আইকন, শর্টকাট) জন্য ব্যবহৃত চিত্রগুলির চারটি দিকে পর্যাপ্ত প্যাডিং (25%) রয়েছে৷