প্যাটার্ন ও কম্পোনেন্ট

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

উন্নতিগুলির একটি সংক্ষিপ্তসার এখানে দেওয়া হল:

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

নতুন উইজেট:

  • অ্যাপের বিবরণের জন্য একটি হেডার উইজেট। অ্যাপ আইকন, অ্যাপ লেবেল ও অন্যান্য তথ্য দেখায়।
  • কিছু পৃষ্ঠায় বড় করার বোতাম। পৃষ্ঠাটি শুরুতে লুকানো অবস্থায় থাকতে পারে এবং ব্যবহারকারী 'বড় করুন' বোতামে ক্লিক না করা পর্যন্ত কম গুরুত্বপূর্ণ আইটেম লুকানো থাকতে পারে।
  • ডিফল্ট অ্যাপ পিকার UI:
    • ডিফল্ট ব্রাউজার, ডিফল্ট ফোন অ্যাপ ইত্যাদি বেছে নেওয়ার জন্য UI
    • আগে এটি একটি ডায়ালগ ছিল, এখন এটি ফুল স্ক্রিন রেডিও বোতাম-ভিত্তিক UI।
  • "মাস্টারসুইচ" স্টাইল সংক্রান্ত পছন্দ। এটি হল দুটি ক্লিক টার্গেট সহ পছন্দ। বাঁদিকের টার্গেটটি একটি সাবসেটিং ফ্র্যাগমেন্ট বা ইনটেন্ট দেখায়। ডানদিকের টার্গেট হল একটি সুইচ টগল, যা পুরো পৃষ্ঠার জন্য চালু/বন্ধ কন্ট্রোল করে।

উদাহরণ ও সোর্স

  • ডিভাইডার আচরণ
    • নতুন ডিভাইডার আচরণ ব্যবহার করার জন্য সেটিংসের সব পৃষ্ঠা পরিবর্তন করা হয়েছে।
    • ডিভাইডারের আচরণ ThemeOverlay হিসেবে এখানে সংজ্ঞায়িত করা হয়েছে:
      packages/apps/Settings/res/values/styles_preference.xml
  • ActionBar থিম পরিবর্তন
    • নতুন অ্যাকশনবার থিম ব্যবহার করার জন্য সেটিংসের সব পৃষ্ঠা পরিবর্তন করা হয়েছে।
    • থিমটি Theme.DeviceDefault.Settings-এ সংজ্ঞায়িত করা হয়েছে
  • নতুন পছন্দ লেআউট
    • সেটিংসের অনেক পৃষ্ঠা এখন নতুন পছন্দ লেআউট ব্যবহার করছে।
    • আপনি এখানে কোডটি খুঁজে পেতে পারেন:
      packages/apps/Settings/res/values/styles_preference.xml
  • অ্যাপ হেডার উইজেট
    • সেটিংসে বেশিরভাগ অ্যাপের তথ্য পৃষ্ঠায় ইতিমধ্যেই নতুন অ্যাপ হেডার প্রয়োগ করা হচ্ছে।
    • উদাহরণ ও কোড এখানে পাওয়া যাবে:
      packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
  • বড় করার বোতাম
    • উদাহরণ ও কোড এখানে পাওয়া যাবে:
      packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java

      মনে রাখবেন: এই কম্পোনেন্টটি অবশ্যই DashboardFragment-এর সাথে একসাথে ব্যবহার করতে হবে। (আপডেট করা তথ্য আর্কিটেকচারে DashboardFragment সম্পর্কে আরও বিবরণ দেখুন।)

  • ডিফল্ট অ্যাপ পিকার
    • আপনি এখানে বেস ক্লাসের কোড খুঁজে পাবেন:
      packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
    • DefaultAppPickerFragment-এর বেশ কয়েকটি সাবক্লাস আছে, প্রত্যেকটি আলাদা আলাদা ইনটেন্টের জন্য পিকার প্রয়োগ করে।
  • MasterSwitch স্টাইল সংক্রান্ত পছন্দ
    • কোড এখানে আছে: https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
    • ব্যবহারের একটি উদাহরণ হল ওয়াই-ফাই প্রাইমারি সুইচ। আপনি এখানে একটি উদাহরণ দেখতে পাবেন: packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java

প্রয়োগ

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

সেটিংস মেনু কাস্টমাইজ করা

  • ডিভাইডারের আচরণ। ডিভাইডার কীভাবে আঁকা হবে তা পরিবর্তন করতে, 'সেটিংস ডিভাইডার' স্টাইল আপডেট করুন এবং নিচের ভ্যালু পরিবর্তন করুন:
    • allowDividerAbove
    • allowDividerBelow
    • allowDividerAfterLastItem
  • ActionBar থিমের রঙ। অ্যাক্টিভিটির থিম হিসেবে Theme.DeviceDefault.Settings ব্যবহার করা উচিত অথবা Theme.DeviceDefault.Settings-কে পেরেন্ট হিসেবে ব্যবহার করে কাস্টম থিম তৈরি করুন।
  • অ্যাপ হেডার উইজেট। প্রতিটি ফিল্ড কাস্টমাইজ করতে AppHeaderController-এ সেটার ব্যবহার করুন এবং সব ফিল্ড সেট করা হয়ে গেলে build() কল করুন।
  • বড় করার বোতাম:
    • সম্পূর্ণ কার্যকারিতা বন্ধ করতে, ProgressiveDisclosureMixin-এর জন্য কনস্ট্রাক্টর ওভাররাইড করুন এবং keepExpanded-কে true হিসেবে সেট করুন।
    • প্রাথমিকভাবে কতগুলি আইটেম দেখানো হবে তা কাস্টমাইজ করতে, ফ্র্যাগমেন্টের onAttach(Context) মেথডের সময় ProgressiveDisclosureMixin.setTileLimit() মেথড কল করুন।