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

এই ডকুমেন্টটিতে একটি উইজেট প্রোভাইডার ব্যবহার করে কীভাবে একটি উইজেট পাবলিশ করতে হয় তা বর্ণনা করা হয়েছে। অ্যাপ উইজেট হোস্ট করার জন্য আপনার নিজস্ব AppWidgetHost তৈরি করার বিষয়ে বিস্তারিত জানতে, “Build a widget host” দেখুন।
আপনার উইজেট কীভাবে ডিজাইন করবেন সে সম্পর্কে তথ্যের জন্য, অ্যাপ উইজেট ওভারভিউ দেখুন।
উইজেট উপাদান
একটি উইজেট তৈরি করতে নিম্নলিখিত মৌলিক উপাদানগুলো প্রয়োজন:
-
AppWidgetProviderInfoঅবজেক্ট - একটি উইজেটের মেটাডেটা বর্ণনা করে, যেমন উইজেটটির লেআউট, আপডেটের হার এবং
AppWidgetProviderক্লাস। এই নথিতে বর্ণিত পদ্ধতি অনুযায়ীAppWidgetProviderInfoএক্সএমএল-এ সংজ্ঞায়িত করা হয়। -
AppWidgetProviderক্লাস - এটি সেই মৌলিক পদ্ধতিগুলো সংজ্ঞায়িত করে, যা আপনাকে প্রোগ্রাম্যাটিকভাবে উইজেটের সাথে ইন্টারফেস করতে দেয়। এর মাধ্যমে, উইজেট আপডেট, সক্রিয়, নিষ্ক্রিয় বা মুছে ফেলা হলে আপনি ব্রডকাস্ট বার্তা পান। আপনি ম্যানিফেস্টে
AppWidgetProviderঘোষণা করেন এবং তারপর এই নথিতে বর্ণিত পদ্ধতি অনুযায়ী এটি ইমপ্লিমেন্ট করেন । - লেআউট দেখুন
- উইজেটটির প্রাথমিক লেআউট নির্ধারণ করে। এই নথিতে বর্ণিত পদ্ধতি অনুযায়ী লেআউটটি XML-এ সংজ্ঞায়িত করা হয়।
চিত্র ২-এ দেখানো হয়েছে, এই উপাদানগুলো কীভাবে অ্যাপের সামগ্রিক উইজেট প্রক্রিয়াকরণ প্রবাহে অন্তর্ভুক্ত হয়।

আপনার উইজেটে যদি ব্যবহারকারীর কনফিগারেশনের প্রয়োজন হয়, তাহলে অ্যাপ উইজেট কনফিগারেশন অ্যাক্টিভিটিটি প্রয়োগ করুন। এই অ্যাক্টিভিটিটি ব্যবহারকারীদের উইজেটের সেটিংস পরিবর্তন করার সুযোগ দেয়—উদাহরণস্বরূপ, একটি ঘড়ি উইজেটের জন্য টাইম জোন।
- অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) থেকে, আপনি একটি ডিফল্ট কনফিগারেশন দিতে পারেন এবং ব্যবহারকারীদের পরবর্তীতে উইজেটটি পুনরায় কনফিগার করার সুযোগ দিতে পারেন। আরও বিস্তারিত জানতে ‘উইজেটের ডিফল্ট কনফিগারেশন ব্যবহার করুন’ এবং ‘ব্যবহারকারীদের স্থাপন করা উইজেট পুনরায় কনফিগার করার সুযোগ দিন’ দেখুন।
- অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০) বা তার নিচের সংস্করণে, ব্যবহারকারী যখনই তাদের হোম স্ক্রিনে উইজেটটি যুক্ত করেন, তখনই এই অ্যাক্টিভিটিটি চালু হয়।
আমরা আরও নিম্নলিখিত উন্নতিগুলোর সুপারিশ করছি: নমনীয় উইজেট লেআউট , বিবিধ উন্নয়ন , উন্নত উইজেট , সংগ্রহ উইজেট , এবং একটি উইজেট হোস্ট তৈরি করা ।
AppWidgetProviderInfo XML ঘোষণা করুন
প্রচলিত ভিউ এবং গ্ল্যান্স-ভিত্তিক উইজেট, উভয় ক্ষেত্রেই মেটাডেটা সেটিংস (যেমন ডিফল্ট সেল সাইজ, রিসাইজ সীমাবদ্ধতা এবং আপডেট ফ্রিকোয়েন্সি) নির্ধারণ করার পদ্ধতি হুবহু একই।
আপনার মেটাডেটা XML ফাইল কীভাবে সংজ্ঞায়িত ও কনফিগার করতে হয় তা জানতে, Glance ডকুমেন্টেশনের "Compose-first Declare the AppWidgetProviderInfo XML" বিভাগটি দেখুন।
উইজেট ব্রডকাস্ট পরিচালনা করতে AppWidgetProvider ক্লাস ব্যবহার করুন।
প্ল্যাটফর্মের ব্রডকাস্ট রিসিভার মেকানিক্স, ম্যানিফেস্ট ডিক্লারেশন ফিল্টার এবং লাইফসাইকেল ইভেন্ট লুপগুলো প্ল্যাটফর্মের অধীনে একীভূত করা হয়েছে। কম্পোজ-ফার্স্ট ডেভেলপমেন্টে, এই ব্রডকাস্টগুলো GlanceAppWidgetReceiver র্যাপার ব্যবহার করে অর্কেস্ট্রেট করা হয়।
ম্যানিফেস্টে আপনার রিসিভার কীভাবে রেজিস্টার করবেন এবং হিল্ট-কম্প্যাটিবল লাইফসাইকেল ওভাররাইড কীভাবে ইমপ্লিমেন্ট করবেন তা বুঝতে, গ্ল্যান্স ডকুমেন্টেশনের “Compose-first Use the AppWidgetProvider class to handle broadcasts” সেকশনটি দেখুন।
উইজেট লেআউট তৈরি করুন
আপনাকে অবশ্যই আপনার উইজেটের জন্য XML-এ একটি প্রাথমিক লেআউট নির্ধারণ করতে হবে এবং সেটি প্রজেক্টের res/layout/ ডিরেক্টরিতে সংরক্ষণ করতে হবে। বিস্তারিত জানার জন্য ডিজাইন নির্দেশিকা দেখুন।
আপনি যদি লেআউট সম্পর্কে পরিচিত হন, তবে উইজেট লেআউট তৈরি করা বেশ সহজ। তবে, মনে রাখবেন যে উইজেট লেআউটগুলো RemoteViews উপর ভিত্তি করে তৈরি, যা সব ধরনের লেআউট বা ভিউ উইজেট সমর্থন করে না। আপনি RemoteViews দ্বারা সমর্থিত কাস্টম ভিউ বা ভিউগুলোর সাবক্লাস ব্যবহার করতে পারবেন না।
RemoteViews ViewStub সমর্থন করে, যা হলো একটি অদৃশ্য, শূন্য-আকারের View যা আপনি রানটাইমে লেজিলি লেআউট রিসোর্স ইনফ্লেট করতে ব্যবহার করতে পারেন।
স্টেটফুল আচরণের জন্য সমর্থন
অ্যান্ড্রয়েড ১২ নিম্নলিখিত বিদ্যমান উপাদানগুলো ব্যবহার করে স্টেটফুল আচরণের জন্য সমর্থন যোগ করে:
উইজেটটি এখনও স্টেটলেস। আপনার অ্যাপকে অবশ্যই স্টেট সংরক্ষণ করতে হবে এবং স্টেট পরিবর্তনের ইভেন্টগুলোর জন্য রেজিস্টার করতে হবে।

নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে এই উপাদানগুলি বাস্তবায়ন করতে হয়।
কোটলিন
// 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)
)
জাভা
// 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));
দুটি লেআউট প্রদান করুন: একটি অ্যান্ড্রয়েড ১২ বা তার উচ্চতর সংস্করণের ডিভাইসগুলোর জন্য res/layout-v31 ফোল্ডারে, এবং অন্যটি অ্যান্ড্রয়েড ১১ বা তার পূর্ববর্তী সংস্করণের জন্য ডিফল্ট res/layout ফোল্ডারে।
গোলাকার কোণা প্রয়োগ করুন
বাইরের ব্যাকগ্রাউন্ড এবং ভেতরের আনুপাতিক ব্যাসার্ধ গণনা করা একটি প্রচলিত ও সর্বজনীন পদ্ধতি। কম্পোজ-ফার্স্ট ডেভেলপমেন্টে, কাস্টম থিম রিসোর্সের পাশাপাশি এটি কোটলিনে ডায়নামিকভাবে সেট করা যেতে পারে।
পুরোনো অ্যান্ড্রয়েড ডিভাইসগুলির জন্য কোণার ব্যাসার্ধ প্রয়োগ করতে বা ডায়নামিক স্টাইল সেট আপ করতে, Glance ডকুমেন্টেশনের "Compose-first Implement rounded corners" বিভাগটি দেখুন।
