Material You ডিজাইন

Android 12 থেকে শুরু করে, Material You ডিজাইন Android OS-এ এক্সপ্রেশন ও ফ্লুইডিটির উপর ফোকাস করে, যার লক্ষ্য হল ব্যবহারকারীদের তাদের প্রয়োজন অনুসারে একটি একক, সুসংহত অভিজ্ঞতা তৈরি করতে ও সেটির মালিকানা দিতে সাহায্য করা। একজন Android পার্টনার হিসেবে, আপনাকে নিম্নলিখিত ক্ষেত্রগুলিতে আপনার Android ডিভাইসে Material You ডিজাইন যোগ করতে উৎসাহিত করা হচ্ছে:

  • ডায়নামিক কালার
  • মোশন
  • উইজেট

ডায়নামিক কালার

ডায়নামিক কালার হল Material You ডিজাইনের মূল বিষয় এবং এটি Android-এর মাল্টি-ইয়ার স্ট্র্যাটেজির একটি গুরুত্বপূর্ণ অংশ। এর মাধ্যমে ব্যবহারকারীদের জন্য আরও সহজ ও গভীর কাস্টমাইজেশন নিয়ে আসা হয়। অন্য কোনও ডিভাইস এই সুবিধা দেয় না। Material You এগুলি অফার করে:

  • ব্যবহারকারী ও ডেভেলপাররা যেকোনও Android ডিভাইসে উপলভ্য পছন্দমতো সাজিয়ে নেওয়ার ধারাবাহিক, সমৃদ্ধ অভিজ্ঞতা পান।

  • Android OEM-এর কাছে সিস্টেম UI এবং ফার্স্ট-পার্টি অ্যাপে নতুন নতুন উদ্ভাবন চালিয়ে যাওয়ার সুযোগ আছে। এটি এমনভাবে করা হয় যাতে তা তাদের হার্ডওয়্যার এবং ব্র্যান্ডের রঙ, মেক ও ফর্মের সাথে সামঞ্জস্যপূর্ণ হয়।

ডায়নামিক কালারের সুবিধা নিতে, Android 12 Material You কালার এক্সট্র্যাকশন স্টোরিকে আপনার সফ্টওয়্যার অফারিংয়ের মূল অংশ হিসেবে ব্যবহারকারীদের কাছে তুলে ধরুন। ডিভাইসে, AOSP-তে থাকা কালার এক্সট্র্যাকশন লজিক ব্যবহার করুন, বিশেষ করে সেই লজিক যা একটি সিঙ্গেল ওয়ালপেপার বা থিম সোর্স কালার নেয় এবং ৬৫টি কালার API-এর মাধ্যমে সেটি আউটপুট করে। ডায়নামিক কালার সংক্রান্ত প্রয়োজনীয়তার জন্য, ডায়নামিক কালার ব্যবহার করা দেখুন।

সম্পূর্ণ ডায়নামিক কালার ফ্লোতে চারটি ধাপ রয়েছে, নিচে তা দেখানো হল:

Material You কালার ফ্লো

ছবি ১. Material You ডায়নামিক কালার ফ্লো

  1. OEM পিকারের মাধ্যমে ব্যবহারকারী ওয়ালপেপার বা থিম পরিবর্তন করেন।

  2. ব্যবহারকারী নিম্নলিখিত বিকল্পগুলির মধ্যে থেকে একটি বেছে নেন:

    • ডিভাইসের থিম। বেছে নেওয়া হলে, Android অটোমেটিক এমন একটি সোর্স কালার বেছে নেয় যা প্রয়োজনীয়তা পূরণ করে।

    • নতুন ওয়ালপেপার + থিম। বেছে নেওয়া হলে, AOSP লজিক বেছে নেওয়া ওয়ালপেপার থেকে অটোমেটিক একটি সিঙ্গেল সোর্স কালার বেছে নেয়।

  3. AOSP লজিক অনুযায়ী, AOSP একটি সোর্স কালারকে ১৩টি টোনাল কালার ভ্যারিয়েন্ট সহ ৫টি টোনাল প্যালেটে এক্সপ্যান্ড করে, যা পরে ৬৫টি কালার অ্যাট্রিবিউট পপুলেট করে।

  4. অ্যাপ UI ৬৫টি কালার অ্যাট্রিবিউট এমনভাবে ব্যবহার করে যা Android অ্যাপ ইকোসিস্টেম জুড়ে সামঞ্জস্যপূর্ণ। ডিভাইসের সিস্টেম UI এবং OEM-নির্দিষ্ট অ্যাপের জন্য একই কালার প্যালেট ব্যবহার করার জন্য আপনাকে উৎসাহিত করা হচ্ছে।

Android 12 প্যাচ

ওয়ালপেপার থেকে রঙ এক্সট্র্যাক্ট করার এন্ড-টু-এন্ড লজিক পেতে এবং ইকোসিস্টেমের সাথে সামঞ্জস্যপূর্ণ উপায়ে ডিভাইসকে ৬৫-কালার API পূরণ করার জন্য চালু করতে, আপনার Android 12 ইমপ্লিমেন্টেশনে নিম্নলিখিত প্যাচ অন্তর্ভুক্ত করুন:

ThemePicker-এ কাস্টম রঙ নির্দিষ্ট করা

আপনি AOSP ThemePicker অ্যাপ ব্যবহার করলে, নিম্নলিখিত দুটি শর্ত পূরণ হলে WallpaperPicker অ্যাপ রঙের বিভাগ দেখায়:

  • frameworks/base/packages/SystemUI/res/values/flags.xml-এ flag_monet হল true.
  • প্যাকেজের নাম সহ সিস্টেম স্টাব APK packages/apps/ThemePicker/res/values/override.xml ফাইলের themes_stub_package-এ নির্দিষ্ট করা আছে।

স্টাব APK ফর্ম্যাট

এই APK-এর একটি নমুনা ভার্সন packages/apps/ThemePicker/themes-এ পাওয়া যাবে।

এই APK-তে শুধুমাত্র উপলভ্য প্রাথমিক রঙ ও তাদের নাম সম্পর্কিত বিবরণ থাকতে হবে।

স্টাবে res/xml-এর অধীনে নিম্নলিখিত ফর্ম্যাটে একটি XML ফাইল থাকতে হবে:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="color_bundles">
        <item>color1</item>
        <item>color2</item>
        <item>color3</item>
        <item>color4</item>
    </array>

    <string name="bundle_name_color1">Blue</string>
    <string name="bundle_name_color2">Red</string>
    <string name="bundle_name_color3">Yellow</string>
    <string name="bundle_name_color4">Green</string>

</resources>

এই ফাইলে, color_bundles-এর মধ্যে প্রতিটি item-এর একটি স্বতন্ত্র নাম আছে, যতক্ষণ না নিচের স্ট্রিংগুলির নাম bundle_name_item হয়।

প্রতিটি রঙের জন্য একটি bundle_name_item স্ট্রিং থাকতে হবে, প্রতিটি রঙের জন্য একটি বর্ণনামূলক নাম সহ। এইসব টেক্সটকে অনুবাদ করা সংশ্লিষ্ট স্ট্রিং res/values-language code ডিরেক্টরিতে যোগ করে অনুবাদ করা যেতে পারে।

রঙের প্রকৃত ভ্যালু একই XML-এ অথবা নিম্নলিখিত ফর্ম্যাট সহ আলাদা রিসোর্স XML ফাইলে থাকতে পারে:

<resources>
    <color name="color_primary_color1">#0000FF</color>
    <color name="color_secondary_color1">#0000FF</color>

    <color name="color_primary_color2">#ff0000</color>
    <color name="color_secondary_color2">#ff0000</color>

    <color name="color_primary_color3">#ffff00</color>
    <color name="color_secondary_color3">#ffff00</color>

    <color name="color_primary_color4">#00ff00</color>
    <color name="color_secondary_color4">#00ff00</color>
</resources>

কালার বান্ডেল অ্যারের প্রতিটি আইটেমের জন্য, সেখানে একটি color_primary_item এবং একটি color_secondary_item এন্ট্রি থাকতে হবে (এবং দুটি রঙই একই রঙের হতে হবে)। এই colorটি এন্ট্রির মান হল প্রতিটি রঙের আসল কালার কোড যা প্রাথমিক রঙ বিভাগে দেখানো হবে।

ধাপ ১: ব্যবহারকারীর থিমিং অভিজ্ঞতা তৈরি করা

থিম বাছাইকারী হল সেই জায়গা যেখানে ব্যবহারকারীরা নতুন Material You সংক্রান্ত ব্যক্তিগতকরণ ক্ষমতা ব্যবহার করেন এবং সম্ভাব্য রঙের বিকল্প বা প্রিসেট বেছে নেন। এটি আপনার প্রোডাক্ট ও ব্যবহারকারীর ডেমোগ্রাফির সাথে মানানসই হওয়ায়, আপনি থিম পিকার বা ওয়ালপেপার পিকার ব্যবহার করে ব্যবহারকারীদের আরও সমৃদ্ধ পছন্দমতো অভিজ্ঞতা ও কালার অভিজ্ঞতা অফার করতে পারবেন।

  • ওয়ালপেপার পিকার ব্যবহার করার সময়, ওয়ালপেপার কালার এক্সট্র্যাকশন ডিফল্ট হিসেবে চালু থাকে। তবে, ব্যবহারকারীকে আরও বিকল্প দিতে আপনি পিকারের কিছু কাস্টমাইজেশন করতে পারেন।

ধাপ ২: সোর্স কালারে ওয়ালপেপারের রঙ এক্সট্র্যাক্ট করা

ওয়ালপেপার কালার এক্সট্র্যাকশন চালু করতে, উপরে তালিকাভুক্ত Android 12 প্যাচ চেরিপিক করুন (এই কার্যকারিতা ভবিষ্যতে AOSP রিলিজে ডিফল্ট হিসেবে চালু করা হবে)। WallpaperManager#onWallpaperColorsChanged-এর মাধ্যমে ThemeOverlayController#mOnColorsChangedListener-এ frameworks/base/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java-এ AOSP লজিক যা ওয়ালপেপার এক্সট্র্যাকশন ট্রিগার করে তা শুরু হয়। আমরা সাজেস্ট করি যে আপনি অপরিবর্তিত AOSP লজিক ব্যবহার করুন যাতে ডেভেলপমেন্টের অভিজ্ঞতা একই রকম থাকে।

ডিফল্ট হিসেবে, লজিকটি ব্যবহারের জন্য উপযুক্ত সর্বোচ্চ ফ্রিকোয়েন্সি রঙ বেছে নেয়। অ্যালগরিদম দ্বারা রিটার্ন করা অন্যান্য সোর্স কালারের সুবিধা নিতে এবং থিম পিকারে ব্যবহারকারীদের কাছে সেইসব কালার দেখাতে, ColorScheme#getSeedColors(wallpaperColors: WallpaperColors) ব্যবহার করুন।

ব্যবহারের উপযুক্ত হতে, সোর্স কালারের (ওয়ালপেপার থেকে এক্সট্র্যাক্ট করা বা ব্যবহারকারীর বেছে নেওয়া প্রিসেট) ন্যূনতম CAM16 ক্রোমা ভ্যালু ৫ হতে হবে; এটি নিশ্চিত করে যে সোর্স কালারকে একটি কালার থেকে ৬৫টি টোনাল কালারে কনভার্ট করার সময় সেটি সূক্ষ্ম ডার্ক টোনের দ্বারা প্রভাবিত হয় না এবং ব্যবহারকারীর পছন্দের প্রতিনিধিত্ব করে। CAM16-এ রঙ পড়তে ও পরিবর্তন করতে, Cam#fromInt বা Cam#getInt ব্যবহার করুন।

ডায়নামিক কালার প্যালেট ব্যবহার না করা যেসব ডিভাইসে ওয়ালপেপার থেকে কালার এক্সট্র্যাক্ট করার সুবিধা কাজ করে না, সেগুলিতেও আপনি নিশ্চিত করতে পারবেন যে ডায়নামিক কালার কাজ করে এমন Google অ্যাপ ও থার্ড-পার্টি অ্যাপ নিচে উল্লেখ করা পদ্ধতি অনুসরণ করে খুব ভাল দেখাচ্ছে:

  • flag_monet বন্ধ করে ডিফল্ট মেটেরিয়াল প্যালেট ব্যবহার করুন frameworks/base/packages/SystemUI/res/values/flags.xml।
  • ব্যবহারকারীরা যাতে এখনও প্রিসেট থিম পিকার ব্যবহার করে তাদের OS পছন্দমতো সাজিয়ে নিতে পারেন তা নিশ্চিত করুন।

ধাপ ৩: সোর্স কালারকে কালার API-তে এক্সপ্যান্ড করুন

আগের ধাপ থেকে প্রাপ্ত সিঙ্গেল সোর্স কালার ব্যবহার করে, Android ৫টি অনন্য টোনাল প্যালেট (অ্যাকসেন্ট ১-৩, নিউট্রাল ১-২) তৈরি করে, প্রতিটি প্যালেটে ১৩টি করে রঙ থাকে এবং প্রতিটি রঙে বিভিন্ন লুমিন্যান্স ভ্যালু (০ থেকে ১০০০) থাকে, যার ফলে মোট ৬৫টি রঙ পাওয়া যায়। Android 12 প্যাচে দেওয়া লজিক এই কালার এক্সপ্যানশন সঠিকভাবে প্রয়োগ করে; নিচে দেওয়া বিবরণ প্রয়োগের ব্যাপারে জানায়।

ডেভেলপারদের জন্য সামঞ্জস্য বজায় রাখতে, ৫টি টোনাল প্যালেট (অ্যাকসেন্ট১, অ্যাকসেন্ট২, অ্যাকসেন্ট৩, নিউট্রাল১, নিউট্রাল২) এবং তাদের সংশ্লিষ্ট ১৩টি রঙ অবশ্যই একক সোর্স রঙের উপর ভিত্তি করে হতে হবে এবং CAM16 ক্রোমা এবং হিউ ভ্যালুতে সংশ্লিষ্ট পরিবর্তনগুলি নিচে লেখা আছে:

  • system_accent1

    • ক্রোমা: কালার ভেরিয়েন্টের জন্য "৪০" ব্যবহার করুন যা ০, ১০, ৫০, এবং ১০০-এ শেষ হয়, অন্যথায় "৪৮"
    • হিউ: সোর্সের মতো
  • system_accent2

    • Chroma: "16" ব্যবহার করুন
    • হিউ: সোর্সের মতো একই
  • system_accent3

    • Chroma: "32" ব্যবহার করুন
    • হিউ: ৬০ ডিগ্রি পজিটিভ ঘোরান
  • system_neutral1

    • Chroma: "4" ব্যবহার করুন
    • হিউ: সোর্সের মতো একই
  • system_neutral2

    • Chroma: "8" ব্যবহার করুন
    • হিউ: সোর্সের মতো

CTS-এ লুমিন্যান্স ও হিউ API কল যাচাই করার জন্য পরীক্ষা অন্তর্ভুক্ত থাকে। রান করাতে, atest SystemPalette ব্যবহার করুন।

ধাপ ৪: অ্যাপ ও সিস্টেম UI-তে ডায়নামিক কালার ব্যবহার করা

কোনও ডিভাইসে ডায়নামিক কালার সেট করার পরে, অ্যাপগুলি রঙ ব্যবহার করার জন্য Material নির্দেশিকা অনুসরণ করে। থার্ড-পার্টি অ্যাপের জন্য মেটেরিয়াল নির্দেশিকা material.io-এ ২৬ অক্টোবর, ২০২১-এর মধ্যে প্রকাশ করা হবে। সিস্টেম UI ও ফার্স্ট-পার্টি অ্যাপের ক্ষেত্রে, আমরা দৃঢ়ভাবে সাজেস্ট করি যে ব্যবহারকারীর অভিজ্ঞতা জুড়ে ডায়নামিক কালার ইন্টিগ্রেট করুন। এটি এমনভাবে করুন যাতে তা আপনার হার্ডওয়্যার ও ব্র্যান্ডের সাথে মানানসই হয় এবং আপনার ডিভাইসগুলিকে আলাদা করতে সাহায্য করে।

ডায়নামিক কালার সংক্রান্ত সাধারণ নির্দেশিকার জন্য, নিম্নলিখিত বিষয়গুলি দেখুন:

  • অ্যাপ এবং সিস্টেম UI-তে ফোরগ্রাউন্ড এলিমেন্টের জন্য অ্যাকসেন্ট কালার ব্যবহার করুন:

    @android:color/system_accent1_0 … 1000 // most-used foreground color group
    @android:color/system_accent2_0 … 1000 // alternate accent, used for surfaces
    @android:color/system_accent3_0 … 1000 // playful, analogous color
    
  • অ্যাপ এবং সিস্টেম UI-তে ব্যাকগ্রাউন্ড এলিমেন্টের জন্য নিউট্রাল কালার ব্যবহার করুন:

    @android:color/system_neutral1_0 … 1000 // most-used background color group
    @android:color/system_neutral2_0 … 1000 // used for higher-elevation surfaces
    

Material You কীভাবে রঙ ম্যাপ করে এবং SysUI-তে API কীভাবে ব্যবহার করা হয় সেই সম্পর্কে আরও জানতে, অতিরিক্ত রিসোর্স দেখুন।

ধাপ ৫: আপনার AOSP WallpaperPicker ইমপ্লিমেন্টেশনে ডায়নামিক কালার বিকল্প যোগ করুন

Android 13 ও এর পরের যেকোনও ভার্সনের জন্য তৈরি

Android 13 থেকে শুরু করে, android.theme.customization.accent_color বন্ধ করা হয়েছে। বিভিন্ন রঙের ভেরিয়েন্ট দেখানোর জন্য নতুন অ্যাট্রিবিউট android.theme.customization.theme_style যোগ করা হয়েছে। আমাদের কোডবেসে বর্তমানে নিম্নলিখিত চারটি ভেরিয়েন্ট আছে:

TONAL_SPOT = Default Material You theme since Android S.
VIBRANT = Theme where accent 2 and 3 are analogous to accent 1.
EXPRESSIVE = Highly chromatic theme.
SPRITZ = Desaturated theme, almost grayscale.

এগুলি Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES-এ পাঠানো হয়, যেমন নিচের JSON-এ দেখানো হয়েছে:

{
    "android.theme.customization.system_palette":"B1611C",
    "android.theme.customization.theme_style":"EXPRESSIVE"
}

Android 12 ও এর আগের যেকোনও ভার্সনের জন্য তৈরি করা হয়েছে

কাস্টম থিম পিকার ব্যবহার করার সময়, ডিভাইসকে অবশ্যই Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES-এ নিম্নলিখিত ফর্ম্যাটে JSON ফাইল প্রদান করে একটি সঠিক সোর্স কালার পাঠাতে হবে (যেখানে 746BC1 হল একটি উদাহরণ সঠিক সোর্স কালার):

{
      "android.theme.customization.system_palette":"746BC1",
      "android.theme.customization.accent_color":"746BC1"
}

এটি করলে, ওয়ালপেপার থেকে রঙ এক্সট্র্যাক্ট করার (ধাপ ২) প্রসেসটি এড়িয়ে যাওয়া হয় এবং সরাসরি ৬২টি কালার অ্যাট্রিবিউটে প্রদান করা সোর্স কালারকে এক্সপ্যান্ড করা হয় (ধাপ ৩)।

ধাপ ৬: টিকিট জমা দিন

সিস্টেম ইন্টিগ্রেশন ছাড়াও, আপনাকে একটি টিকিট জমা দিতে হবে এবং আপনার ব্র্যান্ডের নাম (Build.MANUFACTURER) আমাদের জানাতে হবে। যেহেতু বেশিরভাগ থার্ড-পার্টি অ্যাপ ডায়নামিক কালার দেখানোর জন্য Android-এর জন্য মেটেরিয়াল কম্পোনেন্ট ব্যবহার করছে, তাই কোন কোন ডিভাইসে ডায়নামিক কালার টোনাল প্যালেট ফিচার ইন্টিগ্রেট করা আছে তা জানাতে আমরা হার্ডকোড করা শ্বেতলিস্ট ব্যবহার করছি।

মোশন

ফ্লুইড মোশন ডিভাইসকে আধুনিক ও প্রিমিয়াম করে তোলে। ডেভেলপারদের বিশ্বাস ও সন্তুষ্টি অর্জন ও বজায় রাখতে, ওভারস্ক্রল ও রিপেল হল ফ্লুইড মোশনের দুটি গুরুত্বপূর্ণ অংশ যেগুলিকে সামঞ্জস্যপূর্ণ দেখতে ও অনুভব করতে হবে।

আপনার OS-এ ওভারস্ক্রল ব্যবহার করা

Android 12-এ আরও বেশি রেসপন্সিভ, ডায়নামিক ওভারস্ক্রল মোশন অন্তর্ভুক্ত রয়েছে যা ভিউ স্ট্রেচ হিসেবে দেখানো হয়, যখন ব্যবহারকারী কোনও লিস্টের এজ স্ক্রল করে পেরিয়ে যাওয়ার চেষ্টা করেন। নিচে একটি উদাহরণ দেখানো হল:

Material You Overscroll

ছবি ২. Android 12 ওভারস্ক্রল এফেক্ট, যেমন সেটিংসে দেখানো হয়েছে

ডেভেলপারদের ধারাবাহিকতা বজায় রাখতে, আপনার ডিভাইসে সামগ্রিক ওভারস্ক্রল এফেক্ট যাতে নিম্নলিখিতগুলির মতো হয় তা নিশ্চিত করুন:

  • যেসব ডিভাইসে ActivityManager.isHighEndGfx()-এর জন্য true রিটার্ন করে, সেগুলিতে ওভারস্ক্রল এফেক্ট হল স্ক্রিনের নন-লিনিয়ার স্ট্রেচ (যেমন উপরে দেখানো হয়েছে)।

  • কম পারফর্ম্যান্সের ডিভাইসে, স্ট্রেচ এফেক্টকে সরলীকৃত করে লিনিয়ার স্ট্রেচ করা হয় (সিস্টেমের উপর লোড কমাতে)।

ফার্স্ট-পার্টি অ্যাপে ওভারস্ক্রল ব্যবহার করা

কাস্টম ভিউ ব্যবহার করার সময়, আপনাকে হয়ত কিছু অ্যাপ ও সিস্টেম UI পরিবর্তন করতে হবে যেগুলি স্ট্রেচ এফেক্ট ব্যবহার করে।

  • স্ট্রেচ ওভারস্ক্রল কাজ করানোর জন্য লেটেস্ট লাইব্রেরিতে আপগ্রেড করুন:

    • RecyclerView-এর জন্য androidx.recyclerview:recyclerview:1.3.0-alpha01
    • NestedScrollView-এর জন্য androidx.core:core:1.7.0-alpha01 এবং EdgeEffectCompat
    • ViewPager-এর জন্য androidx.viewpager:viewpager:1.1-alpha01
  • EdgeEffect ব্যবহার করে এমন কাস্টম লেআউটের জন্য, নিম্নলিখিত UX পরিবর্তনগুলি বিবেচনা করুন:

    • স্ট্রেচ ওভারস্ক্রল ব্যবহার করার সময়, লেআউট স্ট্রেচ করা হলে ব্যবহারকারীদের লেআউটের কন্টেন্টের সাথে ইন্টার‍্যাক্ট করা উচিত নয়। ব্যবহারকারীকে শুধুমাত্র স্ট্রেচ নিয়েই কাজ করতে হবে এবং উদাহরণস্বরূপ, কন্টেন্টের কোনও বোতামে ক্লিক করতে পারবেন না।

    • EdgeEffect অ্যানিমেশন চলাকালীন ব্যবহারকারী কন্টেন্ট স্পর্শ করলে, অ্যানিমেশনটি ক্যাচ করা উচিত এবং স্ট্রেচ ম্যানিপুলেট করার অনুমতি দেওয়া উচিত। বর্তমান পুল ভ্যালু EdgeEffectCompat.getDistance() থেকে উপলভ্য।

    • পুল ভ্যালু ম্যানিপুলেট করতে এবং খরচ হওয়া পরিমাণ ফেরত পেতে, onPullDistance() ব্যবহার করুন। এর ফলে ডেভেলপাররা স্ট্রেচিং থেকে স্ক্রলিংয়ে মসৃণভাবে ট্রানজিশন করতে পারেন, কারণ আঙুল কন্টেন্টকে শুরুর পজিশনের বাইরে ডেস্ট্রেচ করে।

    • নেস্টেড স্ক্রলিংয়ের সাথে কাজ করার সময়, কন্টেন্ট স্ট্রেচ করা হলে, নেস্টেড কন্টেন্টের আগে স্ট্রেচ টাচ মোশন ব্যবহার করা উচিত, অন্যথায় স্ট্রেচ রিলিজ করার পরিবর্তে আঙুল দিক পরিবর্তন করলে নেস্টিং স্ক্রল করতে পারে।

ওভারস্ক্রল সম্পর্কে আরও জানতে, স্ক্রল জেসচার অ্যানিমেট করা দেখুন।

আপনার OS-এ রিপল (টাচ ফিডব্যাক) ব্যবহার করা

Android 12-এ ট্যাপ ডাউন করার সময় ব্যবহারকারীকে ফিডব্যাক দেওয়ার জন্য আরও হালকা, আরও সূক্ষ্ম টাচ রিপেল অন্তর্ভুক্ত করা হয়েছে।

Material You রিপল

ছবি ৩. Android 12 রিপল এফেক্ট, আরও মসৃণ ফিল অ্যানিমেশন সহ

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

উইজেট

উইজেট হল Android ডিভাইসের মূল কম্পোনেন্ট। Android 12 -এ নতুন API ও API ক্ষমতা অন্তর্ভুক্ত আছে যা সব OEM-এর কাজ করা উচিত।

অতিরিক্ত রিসোর্স

SysUI কালার ব্যবহার

(accent1 = A1, accent2 = A2, accent3 = A3, neutral1 = N1, neutral2 = N2)

Material You কালার ব্যবহার

ছবি ৪. সিস্টেম UI-তে ডায়নামিক কালারের ব্যবহার

Material লাইব্রেরির কালার অ্যাট্রিবিউট আপডেট

নির্দিষ্ট ভিউতে রঙ যোগ করার জন্য ব্যবহৃত কালার রোল তৈরি করে Material, আসন্ন রিলিজে এর থিম অ্যাট্রিবিউট আপডেট করবে।

কালার রোল Android থিম অ্যাট্রিবিউট লাইট থিম
ডায়নামিক কালার
ডার্ক থিম
ডায়নামিক কালার
প্রাইমারি colorPrimary system_accent1_600 system_accent1_200
প্রাইমারি colorOnPrimary system_accent1_0 system_accent1_800
সেকেন্ডারি colorSecondary system_accent2_600 system_accent2_200
সেকেন্ডারি colorOnSecondary system_accent2_0 system_accent2_800
সমস্যা colorError N/A (red_600) প্রযোজ্য নয় (red_200)
সমস্যা হলে colorOnError প্রযোজ্য নয় (সাদা) N/A (red_900)
ব্যাকগ্রাউন্ড android:colorBackground system_neutral1_10 system_neutral1_900
ব্যাকগ্রাউন্ডে colorOnBackground system_neutral1_900 system_neutral1_100
উপরিতল colorSurface system_neutral1_10 system_neutral1_900
Surface-এ colorOnSurface system_neutral1_900 system_neutral1_100

নিম্নলিখিত পয়েন্টার সহ মেটেরিয়াল তার স্টেট অ্যাট্রিবিউট আপডেট করবে:

কালার রোল Android থিম অ্যাট্রিবিউট লাইট থিম
ডায়নামিক কালার
ডার্ক থিম
ডায়নামিক কালার
প্রাথমিক স্টেট কন্টেন্ট colorPrimaryStateContent system_accent1_700 system_accent1_200
প্রাইমারি স্টেট লেয়ার colorPrimaryStateLayer system_accent1_600 system_accent1_300
সেকেন্ডারি স্টেট কন্টেন্ট colorSecondaryStateContent system_accent2_700 system_accent2_200
সেকেন্ডারি স্টেট লেয়ার colorSecondaryStateLayer system_accent2_600 system_accent2_300
প্রাথমিক রাজ্যের কন্টেন্ট colorOnPrimaryStateContent system_accent1_0 system_accent1_800
প্রাইমারি স্টেট লেয়ারে colorOnPrimaryStateLayer system_accent1_900 system_accent1_800
সেকেন্ডারি স্টেট কন্টেন্টে colorOnSecondaryStateContent system_accent2_0 system_accent2_800
সেকেন্ডারি স্টেট লেয়ারে colorOnSecondaryStateLayer system_accent2_900 system_accent2_800
প্রাইমারি কন্টেনার স্টেট কন্টেন্টে colorOnPrimaryContainerStateContent system_accent1_900 system_accent1_900
প্রাইমারি কন্টেনার স্টেট লেয়ারে colorOnPrimaryContainerStateLayer system_accent1_900 system_accent1_900
সেকেন্ডারি কন্টেনার স্টেট কন্টেন্ট colorOnSecondaryContainerStateContent system_accent2_900 system_accent2_900
সেকেন্ডারি কন্টেনার স্টেট লেয়ারে colorOnSecondaryContainerStateLayer system_accent2_900 system_accent2_900
টেরশিয়ারি কন্টেনার স্টেট কন্টেন্টে colorOnTertiaryContainerStateContent system_accent3_900 system_accent3_900
টার্শিয়ারি কন্টেনার স্টেট লেয়ারে colorOnTertiaryContainerStateLayer system_accent3_900 system_accent3_900
সারফেস স্টেট কন্টেন্ট colorOnSurfaceStateContent system_neutral1_900 system_neutral1_100
সারফেস স্টেট লেয়ারে colorOnSurfaceStateLayer system_neutral1_900 system_neutral1_100
সারফেস ভ্যারিয়েন্ট স্টেট কন্টেন্ট সম্পর্কে colorOnSurfaceVariantStateContent system_neutral2_700 system_neutral2_200
Surface Variant State Layer-এ colorOnSurfaceVariantStateLayer system_neutral2_700 system_neutral2_200
সমস্যা সংক্রান্ত স্ট্যাটাসের কন্টেন্ট colorErrorStateContent red800 red200

প্রায়শই জিজ্ঞাসিত প্রশ্ন

কালার এক্সট্র্যাকশন

ব্যবহারকারী ওয়ালপেপার পরিবর্তন করলে, কালার এক্সট্র্যাকশন কি অটোমেটিক হয়ে যায় নাকি কোথাও থেকে ট্রিগার করতে হয়?

Android 12 প্যাচ সহ, ওয়ালপেপার থেকে রঙ এক্সট্র্যাক করার সুবিধা ডিফল্ট হিসেবে চালু থাকে।

ThemeOverlayController.java ThemeOverlayController#mOnColorsChangedListener এবং WallpaperManager#onWallpaperColorsChanged-এর সাথে লজিক ট্রিগার করে।

লাইভ ওয়ালপেপার বা ভিডিও ওয়ালপেপারের ক্ষেত্রে, আমরা কি জানতে পারি যে কখন কালার এক্সট্র্যাকশন স্ক্রিন থেকে কালার নেয়? কিছু ব্যবহারকারী হয়ত শেষ ফ্রেমের কালার চান, কারণ এটিই সবচেয়ে বেশি সময় ধরে দেখানো হয়।

ব্যবহারকারী ওয়ালপেপার সেট করলে অথবা স্ক্রিন পাওয়ার সাইকেল (WallpaperEngine#notifyColorsChanged-এর উত্তরে) সম্পূর্ণ হলে কালার এক্সট্র্যাকশন ট্রিগার হয়। ব্যবহারকারী স্ক্রিন বন্ধ করে আবার চালু করলে, শেষ WallpaperColors ইভেন্ট (লাইভ ওয়ালপেপার থেকে) প্রয়োগ করা হয়।

থিম/ওয়ালপেপার বাছাইকারী

আমি কীভাবে থিম পিকার চালু করব যাতে ব্যবহারকারীরা সর্বাধিক ফ্রিকোয়েন্সি রঙের পরিবর্তে বেছে নেওয়ার জন্য একাধিক সোর্স কালার দেখতে পান? এক্সট্র্যাকশন লজিক থেকে এইসব রঙ পাওয়ার কি কোনও উপায় আছে?

হ্যাঁ। আপনার থিম পিকার থেকে, আপনি ColorScheme#getSeedColors(wallpaperColors: WallpaperColors) ব্যবহার করতে পারবেন।

Pixel-এ থিমযুক্ত আইকন নামে একটি ফিচার আছে। আপনি শেয়ার করেছেন এমন তিনটি প্যাচের মধ্যে কি এটি অন্তর্ভুক্ত? OEM কীভাবে এটি প্রয়োগ করতে পারে?

না। থিমযুক্ত আইকন বিটা ভার্সনে আছে এবং Android 12-এ উপলভ্য নয়।

কালার এক্সট্র্যাকশন ও বেছে নেওয়ার ফিচার চালু রেখে Google Wallpaper অ্যাপ ব্যবহার করার কোনও উপায় আছে কি?

হ্যাঁ। এই পৃষ্ঠায় আগে উল্লেখ করা ইন্টিগ্রেশন সংক্রান্ত ধাপ অনুসরণ করে Google Wallpaper অ্যাপের লেটেস্ট ভার্সনে ফিচারগুলি প্রয়োগ করা যেতে পারে।

আরও বিবরণের জন্য আপনার TAM-এর সাথে যোগাযোগ করুন।

Google কি অ্যাপ বা সোর্স কোড শেয়ার করতে পারে যাতে OEM-রা তাদের সেটিংস মেনুতে ডাইনামিক কালার প্রিভিউয়ের নিজস্ব ভার্সন প্রয়োগ করতে পারে, যা Google-এর ওয়ালপেপার পিকার অ্যাপে দেখানো প্রিভিউ বিভাগের মতোই দেখতে হয়?

যেসব মূল ক্লাস প্রিভিউ রেন্ডার করে সেগুলি হল WallpaperPicker2 এবং Launcher3.

ওয়ালপেপার প্রিভিউ স্ক্রিন হল WallpaperSectionController।

Google Wallpaper অ্যাপে দেখানো মতো, রঙ পরিবর্তন করার পরে প্রিভিউ কীভাবে প্রয়োগ করবেন?

Wallpaper picker অ্যাপ আশা করে যে Launcher-এর (Launcher3-ভিত্তিক লঞ্চারে এটি থাকে) থেকে ContentProvider উপলভ্য থাকবে। Launcher-এ GridCustomizationsProvider প্রিভিউ প্রদান করা হয়, যা ওয়ালপেপার ও স্টাইল অ্যাপকে এটি পড়ার জন্য Launcher-এর মূল অ্যাক্টিভিটির মেটাডেটা থেকে রেফারেন্স নিতে হবে। এইসব কিছু AOSP-এর Launcher3-এ প্রয়োগ করা হয়েছে এবং OEM-এর জন্য উপলভ্য।