একটি প্রাথমিক উইজেট তৈরি করা

Compose-এর মাধ্যমে চেষ্টা করুন
Jetpack Compose হল Android-এর জন্য সাজেস্ট করা UI টুলকিট। Compose-স্টাইল API ব্যবহার করে কীভাবে উইজেট তৈরি করতে হয় তা জানুন।

অ্যাপ উইজেট হল অ্যাপের ছোট ভিউ যা আপনি অন্যান্য অ্যাপে এম্বেড করতে পারেন—যেমন হোম স্ক্রিন—এবং পর্যায়ক্রমিক আপডেট পান। ইউজার ইন্টারফেসে এই ভিউগুলিকে উইজেট বলা হয় এবং আপনি অ্যাপ উইজেট প্রোভাইডার (বা উইজেট প্রোভাইডার) ব্যবহার করে একটি উইজেট প্রকাশ করতে পারবেন। অ্যাপের যে কম্পোনেন্ট অন্যান্য উইজেটকে ধরে রাখে, তাকে অ্যাপ উইজেট হোস্ট (বা উইজেট হোস্ট) বলা হয়। ছবি ১-এ একটি স্যাম্পেল মিউজিক উইজেট দেখানো হয়েছে:

মিউজিক উইজেটের উদাহরণ
ছবি ১. মিউজিক উইজেটের উদাহরণ।

এই ডকুমেন্ট থেকে জানতে পারবেন যে কীভাবে উইজেট প্রোভাইডার ব্যবহার করে উইজেট প্রকাশ করতে হয়। অ্যাপ উইজেট হোস্ট করার জন্য আপনার নিজস্ব AppWidgetHost তৈরি করার ব্যাপারে বিস্তারিত জানতে, উইজেট হোস্ট তৈরি করুন দেখুন।

আপনার উইজেট কীভাবে ডিজাইন করবেন সেই সম্পর্কে তথ্য পেতে, অ্যাপ উইজেটের ওভারভিউ দেখুন।

উইজেট কম্পোনেন্ট

উইজেট তৈরি করতে, আপনার নিম্নলিখিত প্রাথমিক কম্পোনেন্ট প্রয়োজন:

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

ছবি ২-এ দেখানো হয়েছে যে কীভাবে এইসব কম্পোনেন্ট সামগ্রিক অ্যাপ উইজেট প্রসেসিং ফ্লোতে ফিট করে।

অ্যাপ উইজেট প্রসেসিং ফ্লো
ছবি ২. অ্যাপ উইজেট প্রসেসিং ফ্লো।

আপনার উইজেটের জন্য ব্যবহারকারীর কনফিগারেশন প্রয়োজন হলে, অ্যাপ উইজেট কনফিগারেশন অ্যাক্টিভিটি প্রয়োগ করুন। এই অ্যাক্টিভিটি ব্যবহারকারীদের উইজেট সেটিংস পরিবর্তন করতে দেয়—যেমন, ঘড়ি উইজেটের জন্য টাইম জোন।

এছাড়াও, আমরা নিম্নলিখিত উন্নতিগুলি করার সাজেশন দিই: ফ্লেক্সিবল উইজেট লেআউট, বিবিধ উন্নতি, উন্নত উইজেট, কালেকশন উইজেট এবং উইজেট হোস্ট তৈরি করা।

AppWidgetProviderInfo XML ঘোষণা করা

মেটাডেটা সেটিংস (যেমন ডিফল্ট সেল সাইজ, ছোট বড় করার সীমাবদ্ধতা এবং আপডেট করার ফ্রিকোয়েন্সি) নির্ধারণ করা, ট্র্যাডিশনাল ভিউ এবং Glance-ভিত্তিক উইজেট, দুটির ক্ষেত্রেই হুবহু এক।

আপনার মেটাডেটা XML ফাইল কীভাবে সংজ্ঞায়িত ও কনফিগার করবেন তা জানতে, Glance ডকুমেন্টেশনে কম্পোজ-ফার্স্ট AppWidgetProviderInfo XML বিভাগ ঘোষণা করুন দেখুন।

উইজেট ব্রডকাস্ট ম্যানেজ করতে AppWidgetProvider ক্লাস ব্যবহার করুন

প্ল্যাটফর্মের ব্রডকাস্ট রিসিভার মেকানিক্স, ম্যানিফেস্ট ডিক্লারেশন ফিল্টার এবং লাইফসাইকেল ইভেন্ট লুপ প্ল্যাটফর্মের নিচে ইউনিফায়েড করা হয়। Compose-ফার্স্ট ডেভেলপমেন্টে, এইসব ব্রডকাস্ট GlanceAppWidgetReceiver র‍্যাপার ব্যবহার করে অর্কেস্ট্রেট করা হয়।

কীভাবে ম্যানিফেস্টে আপনার রিসিভার রেজিস্টার করবেন এবং Hilt-মানানসই লাইফসাইকেল ওভাররাইড প্রয়োগ করবেন তা বুঝতে, Glance ডকুমেন্টেশনের কম্পোজ-ফার্স্ট ব্রডকাস্ট বিভাগ ম্যানেজ করতে AppWidgetProvider ক্লাস ব্যবহার করুন দেখুন।

উইজেট লেআউট তৈরি করুন

XML-এ আপনার উইজেটের জন্য আপনাকে অবশ্যই একটি প্রাথমিক লেআউট নির্ধারণ করতে হবে এবং এটি প্রজেক্টের res/layout/ ডিরেক্টরিতে সেভ করতে হবে। বিস্তারিত জানতে ডিজাইন সংক্রান্ত নির্দেশিকা দেখুন।

আপনি যদি লেআউট সম্পর্কে জানেন, তাহলে উইজেট লেআউট তৈরি করা সহজ। তবে, মনে রাখবেন যে উইজেট লেআউট RemoteViews-এর উপর ভিত্তি করে তৈরি, যা সব ধরনের লেআউট বা ভিউ উইজেট সাপোর্ট করে না। আপনি কাস্টম ভিউ বা RemoteViews-এর মাধ্যমে কাজ করে এমন ভিউয়ের সাবক্লাস ব্যবহার করতে পারবেন না।

RemoteViews-এ ViewStub-এর সুবিধাও আছে, যা হল একটি অদৃশ্য, শূন্য-সাইজের View, রানটাইমে লেআউট রিসোর্স লেজিলি ইনফ্লেট করতে আপনি এটি ব্যবহার করতে পারবেন।

স্টেটফুল আচরণের জন্য সহায়তা

Android 12 নিম্নলিখিত আগে থেকে থাকা কম্পোনেন্ট ব্যবহার করে স্টেটফুল আচরণের জন্য সহায়তা যোগ করে:

উইজেটটি এখনও স্টেটলেস। আপনার অ্যাপকে অবশ্যই স্ট্যাটাস স্টোর করতে হবে এবং স্ট্যাটাস পরিবর্তন সংক্রান্ত ইভেন্টের জন্য রেজিস্টার করতে হবে।

স্টেটফুল আচরণ দেখানো শপিং লিস্ট উইজেটের উদাহরণ
ছবি ৩. স্টেটফুল আচরণের উদাহরণ।

এইসব কম্পোনেন্ট কীভাবে প্রয়োগ করবেন তা নিম্নলিখিত কোডের উদাহরণ থেকে জানতে পারবেন।

// Check the view.
remoteView.setCompoundButtonChecked(R.id.my_checkbox, true)

// Check a radio group.
remoteView.setRadioGroupChecked(R.id.my_radio_group, R.id.radio_button_2)

// Listen for check changes. The intent has an extra with the key
// EXTRA_CHECKED that specifies the current checked state of the view.
remoteView.setOnCheckedChangeResponse(
    R.id.my_checkbox,
    RemoteViews.RemoteResponse.fromPendingIntent(onCheckedChangePendingIntent)
)

দুটি লেআউট প্রদান করুন: একটি Android ১২ বা তার পরবর্তী ভার্সন চালানো ডিভাইসকে টার্গেট করে res/layout-v31-এ এবং অন্যটি আগের Android ১১ বা তার পূর্ববর্তী ভার্সন চালানো ডিভাইসকে টার্গেট করে ডিফল্ট res/layout ফোল্ডারে।

গোলাকার কোণ প্রয়োগ করুন

বাইরের ব্যাকগ্রাউন্ড এবং ভিতরের আনুপাতিক ব্যাসার্ধ গণনা করা স্ট্যান্ডার্ড এবং শেয়ার করা হয়। Compose-ফার্স্ট ডেভেলপমেন্টে, এটি Kotlin-এ কাস্টম থিম রিসোর্সের পাশাপাশি ডায়নামিকভাবে সেট করা যেতে পারে।

পুরনো Android ডিভাইসের জন্য কর্নার রেডিয়াই প্রয়োগ করতে বা ডায়নামিক স্টাইল সেট-আপ করতে, Glance ডকুমেন্টেশনের কম্পোজ-ফার্স্ট গোলাকার কর্নার প্রয়োগ করুন বিভাগ দেখুন।