বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

কাস্টম এট্রিবিউট প্রয়োগ করা

যখন একটি ভিউ একটি XML লেআউট থেকে তৈরী হয়, XML ট্যাগের সকল এট্রিবউিট রিসোর্স বান্ডল থেকে পঠিত হয় এবং একটি AttributeSet হিসাবে ভিউয়ের কনস্ট্রাক্টরের মধ্যে পাস হয়। যদিও AttributeSet থেকে সারাসরি পাঠ করা সম্ভব, কিন্তু এটা করার কিছু অসুবিধা আছে:

  • এট্রিবিউট ভ্যালুর মধ্যে রিসোর্স রিফারেন্স করাটা নির্ধারিত হয় না

  • স্টাইল প্রয়োগ করা হয় না

পরিবর্তে obtainStyledAttributes() এ AttributeSet পাস করুন। এটা পদ্ধতি ভ্যালুর একটি TypedArray বিন্যাসকে পেছনে ব্যাক করায় যার ইতিমধ্যে পূনরায় রেফারেন্স হয়েছে এবং স্টাইল হয়েছে।

অ্যান্ড্রয়েড রিসোর্স কম্পাইলার আপনার জন্য অনেক কাজ করে obtainStyledAttributes()কে কল করাটা সহজ করতে। res ডিরেক্টরির প্রতিটা < declare-styleable> রিসোর্সের জন্য, জেনারেটেড R.java এক সেট কনসট্যান্ট এবং এট্রিবিউট আইডির একটি বিন্যাস উভয়কেই নির্ধারণ করে যা বিন্যাসের প্রতিটা এট্রিবিউটের জন্য ইনডেক্স নির্ধারণ করে। আপনি TypedArray থেকে এট্রিবিউট রিড/পঠন করার জন্য পূর্বে নির্ধারিত কনসট্যান্ট ব্যবহার করেন। একানে আছে কীভাবে PieChart ক্লাস এর এট্রিবিউট পাঠ করে:

public PieChart(Context context, AttributeSet attrs) {
   super(context, attrs);
   TypedArray a = context.getTheme().obtainStyledAttributes(
        attrs,
        R.styleable.PieChart,
        0, 0);

   try {
       mShowText = a.getBoolean(R.styleable.PieChart_showText, false);
       mTextPos = a.getInteger(R.styleable.PieChart_labelPosition, 0);
   } finally {
       a.recycle();
   }
}

উল্লেখ্য যে TypedArray অবেজেক্ট হচ্ছে একটি শেয়ার করা রিসোর্স এবং অবশ্যই ব্যবহারের পর রিসাইকেল হওয়ার উচিত।