যদিও টাইল এবং উইজেট উভয়ই আপনার কন্টেন্ট একটি রিমোট সিস্টেম সারফেসে প্রদর্শন করে, এগুলো তৈরি করার জন্য স্বতন্ত্র পদ্ধতির প্রয়োজন হয়। আপনার বিদ্যমান টাইলকে উইজেটে রূপান্তর করার অর্থ হলো অনমনীয় লেআউট জেনারেশন থেকে একটি ডাইনামিক, ডিক্লারেটিভ UI-তে চলে যাওয়া, যা নতুন সক্ষমতা এবং একটি সরলীকৃত ডেভেলপমেন্ট মডেল উন্মোচন করে।
আপনার বাস্তবায়ন কৌশল বেছে নিন
আপনি যদি এমন কোনো অ্যাপ মাইগ্রেট করেন যেখানে পুরোনো টাইল রয়েছে, তবে আপনাকে সিদ্ধান্ত নিতে হবে যে আপনার অ্যাপটি কীভাবে সিস্টেমে কন্টেন্ট সরবরাহ করবে। একেবারে নতুন উইজেটগুলোর জন্য একটিমাত্র উইজেট সার্ভিস ব্যবহার করা উচিত, কিন্তু যেসব অ্যাপে আগে থেকেই টাইল রয়েছে, তাদের হয় দুটি সার্ভিসই চালু রাখতে হবে অথবা একটিমাত্র উইজেট সার্ভিসে সবকিছু একত্রিত করতে হবে।
সুপারিশকৃত: দ্বৈত পরিষেবা (টাইল + উইজেট)
যেসব অ্যাপের আগে থেকেই টাইল রয়েছে, তাদের সকলের জন্য টাইল এবং উইজেট উভয়ই বজায় রাখা বাঞ্ছনীয়। দুটি স্বতন্ত্র পরিষেবা প্রদান করলে বিভিন্ন ডিভাইসে ব্যবহারকারীর জন্য সর্বোত্তম অভিজ্ঞতা নিশ্চিত হয়।
- টাইল সার্ভিস:
TileServiceএক্সটেন্ড করুন এবংandroidx.wear.tiles.action.BIND_TILE_PROVIDERএর জন্য একটি ইন্টেন্ট ফিল্টার ডিক্লেয়ার করুন। - উইজেট সার্ভিস:
GlanceWearWidgetServiceএক্সটেন্ড করুন এবংandroidx.glance.wear.action.BIND_WIDGET_PROVIDERএর জন্য একটি ইন্টেন্ট ফিল্টার ডিক্লেয়ার করুন। - যৌক্তিক গ্রুপিং: নতুন ইমপ্লিমেন্টেশনটিকে আপনার বিদ্যমান
TileServiceসাথে লিঙ্ক করতে উইজেট কনফিগারেশনেgroupঅ্যাট্রিবিউটটি ব্যবহার করুন। এর ফলে সিস্টেম সেগুলোকে একটি একক যৌক্তিক উপাদান হিসেবে চিনতে পারে এবং Wear OS 7 বা তার পরবর্তী সংস্করণে ব্যবহারকারীর বিদ্যমান ক্যারোসেল স্লটটিকে স্বয়ংক্রিয়ভাবে নতুন উইজেটে স্থানান্তর করে দেয়।
দ্বৈত-পরিষেবা সেটআপের জন্য সিস্টেমের আচরণ:
| ওএস / ডিভাইসের সক্ষমতা | ফলস্বরূপ অভিজ্ঞতা |
|---|---|
| Wear OS 3 | টাইল ব্যবহার করা হয় |
| Wear OS 4, 5, 6 | টাইল ব্যবহার করা হয় |
| Wear OS 7 (আংশিক-উচ্চতা সমর্থন করে না, যেমন, পিক্সেল ওয়াচ) | টাইল ব্যবহার করা হয় |
| Wear OS 7 (আংশিক-উচ্চতা সমর্থন, যেমন, গ্যালাক্সি ওয়াচ) | উইজেট ব্যবহার করা হয় |
বিকল্প: একক পরিষেবা (শুধুমাত্র উইজেট)
একটিমাত্র পরিষেবা উভয় প্রোটোকলই পরিচালনা করে। যদিও এই পদ্ধতিটি বাস্তবায়নে দ্রুততর, তবে Wear OS-এর নিম্ন সংস্করণ চালিত ডিভাইসগুলিতে আপনার উইজেটকে একটি টাইলে "অভিযোজিত" করার জন্য এটি একটি কম্প্যাটিবিলিটি মোডের উপর নির্ভর করে।
আপনি যদি এই পদ্ধতিটি বেছে নেন:
- উভয় ইন্টেন্ট ফিল্টার উল্লেখ করুন: আপনার সার্ভিসে অবশ্যই
androidx.wear.tiles.action.BIND_TILE_PROVIDERএবংandroidx.glance.wear.action.BIND_WIDGET_PROVIDERউভয়ের জন্য ইন্টেন্ট ফিল্টার অন্তর্ভুক্ত থাকতে হবে। এটি নিশ্চিত করে যে আপনার উইজেটটি Wear 4, 5, 6, এবং 7-এর টাইল সারফেসে (যেখানে প্রয়োজন) প্রদর্শিত হবে। - আপনার বিদ্যমান সার্ভিস নামটি বজায় রাখুন (নির্বিঘ্ন আপগ্রেডের জন্য): আপনি যদি একটি সক্রিয় টাইল প্রতিস্থাপন করেন, তবে একই সার্ভিস ক্লাস নামটি রাখলে এটি নিশ্চিত হয় যে, যেসব ব্যবহারকারীর ক্যারোসেলে আপনার টাইলটি রয়েছে, তারা এটিকে স্বয়ংক্রিয়ভাবে নতুন উইজেটে আপডেট হতে দেখবেন। যদিও Wear OS 7 বিভিন্ন কম্পোনেন্টকে যৌক্তিকভাবে লিঙ্ক করার জন্য উইজেট কনফিগারেশন XML-এ
groupঅ্যাট্রিবিউট ব্যবহার করে, Wear OS 7-এর পূর্ববর্তী সংস্করণগুলো সেগুলোকে "একই" কম্পোনেন্ট হিসেবে শনাক্ত করতে সার্ভিস নামের উপর নির্ভর করে। আপনি যদি একটি নতুন সার্ভিস নাম ব্যবহার করতে চান, তাহলেও আপনার অ্যাপটি পুরোপুরি কাজ করবে; তবে, Wear OS সংস্করণ 6 বা তার পূর্ববর্তী সংস্করণে চালিত ডিভাইসগুলোর ব্যবহারকারীদের তাদের ক্যারোসেলে উইজেটটি ম্যানুয়ালি পুনরায় যুক্ত করতে হবে।
একক পরিষেবা সেটআপের জন্য সিস্টেমের আচরণ:
| ওএস / ডিভাইসের সক্ষমতা | ফলস্বরূপ অভিজ্ঞতা |
|---|---|
| Wear OS 3 | সমর্থিত নয় |
| Wear OS 4, 5, 6 | উইজেটটি পূর্ণ স্ক্রিন টাইল হিসাবে প্রদর্শিত হয় |
| Wear OS 7 (আংশিক-উচ্চতা সমর্থন নেই) | উইজেটটি একটি টাইলে রূপান্তরিত হয় |
| Wear OS 7 (আংশিক-উচ্চতা সমর্থন) | উইজেট ব্যবহার করা হয় |
রেন্ডারার ১.৬+ প্রয়োজন।
UI অনুবাদ টিপস
আপনার UI-কে ProtoLayout (টাইলস) থেকে Remote Compose (উইজেটস)-এ রূপান্তর করার সময়, মানসিক মডেলটি ইম্পারেটিভ লেআউট বিল্ডার থেকে একটি স্টেট-ড্রাইভেন, কম্পোজ-ভিত্তিক আর্কিটেকচারে পরিবর্তিত হয়, যেখানে UI আপডেটগুলি রিকম্পোজিশনের মাধ্যমে পরিচালিত হয়। নিম্নলিখিত নীতিগুলি মনে রাখবেন:
- ডিক্লারেটিভ UI গ্রহণ করুন: ইম্পারেটিভ ProtoLayout বিল্ডার (
LayoutElementBuilders)-কে ডিক্লারেটিভ Remote Compose সমতুল্য উপাদান, যেমনRemoteText,RemoteColumn, এবংRemoteBoxদ্বারা প্রতিস্থাপন করুন। - মূল বিষয়বস্তুর (
mainSlot) উপর মনোযোগ দিন: আংশিক-উচ্চতার উইজেট (যেমন,SMALLএবংLARGEকন্টেইনার টাইপ) একটি কেন্দ্রীভূত ও একনজরে দেখার মতো পৃষ্ঠতল প্রদান করে। একটি ঘন, পূর্ণ-স্ক্রিনের টাইল লেআউট হুবহু পোর্ট করার পরিবর্তে, মূল বিষয়বস্তু এলাকার মধ্যে প্রাথমিক তথ্যের উপর জোর দিতে আপনার ডিজাইনকে সুবিন্যস্ত করুন। - এজ-অ্যালাইনড অ্যাকশনগুলির পুনঃডিজাইন: টাইলস আর্কিটেকচারে,
EdgeButtonএর মতো স্ক্রিন-সংলগ্ন কম্পোনেন্টগুলি একটি নির্দিষ্টbottomSlotএ অ্যাঙ্কর করা থাকত। যেহেতু পার্শিয়াল-হাইট উইজেটগুলি সরাসরি একটি ভার্টিক্যালি স্ক্রলিং সারফেসের সাথে একীভূত হয়, তাই এই নির্দিষ্টbottomSlotব্যবস্থাটির আর অস্তিত্ব নেই। যেহেতু এজ-অ্যালাইনড বাটনগুলি প্রায়শই অত্যন্ত সুস্পষ্ট প্রাথমিক অ্যাকশন হিসাবে কাজ করত, তাই মাইগ্রেট করার জন্য সরাসরি কম্পোনেন্ট অদলবদলের পরিবর্তে একটি সুচিন্তিত UI পুনঃডিজাইনের প্রয়োজন। আপনার প্রাথমিক অ্যাকশনগুলির জন্য বিকল্প UX কৌশলগুলি মূল্যায়ন করুন:- ইনলাইন অ্যাকশন: আপনার
mainSlotলেআউটের মধ্যে সরাসরি একটি ইনলাইনRemoteButtonযুক্ত করুন। - কন্টেইনার ট্যাপ: একটি
PendingIntentActionব্যবহার করে সম্পূর্ণ উইজেট কন্টেইনারটিকে ট্যাপযোগ্য করে ইন্টারঅ্যাকশনকে একীভূত করুন। - বিষয়বস্তুর রদবদল: উইজেটের ফোকাস পুনর্মূল্যায়ন করুন। একটি নির্দিষ্ট অ্যাকশন স্লট না থাকলে, উইজেটের পৃষ্ঠে নির্দিষ্ট অ্যাকশনগুলোকে আলাদা করার পরিবর্তে, এক নজরে দেখার মতো আরও সমৃদ্ধ ডেটা প্রদর্শন এবং একটি মাত্র ট্যাপে সম্পূর্ণ অ্যাপ্লিকেশনটি খোলার ওপর নির্ভর করার কথা বিবেচনা করুন।
- ইনলাইন অ্যাকশন: আপনার
- ইভেন্ট হ্যান্ডলিং স্থানান্তর করুন (অ্যাকশন বনাম ল্যাম্বডা): UI রিফ্রেশ করার জন্য টাইলস ইন্টারঅ্যাকশনের (যেমন
LoadAction) উপর নির্ভর করে, যা সম্পূর্ণ সার্ভিস কলব্যাক ট্রিগার করে। Wear উইজেটগুলো ক্লায়েন্ট-সাইড চালিত। স্ট্যান্ডার্ড কম্পোজ ল্যাম্বডা দূর থেকে চালানো যায় না; এর পরিবর্তে, সিরিয়ালাইজেবল ডিক্লারেটিভ অ্যাকশন (যেমনValueChangeবাPendingIntentAction) প্রদান করুন। অ্যাপ রাউন্ড-ট্রিপ ছাড়াই তাৎক্ষণিক UI আপডেট সমর্থন করতে এগুলোকে ডিক্লারেটিভ স্টেটের (যেমনrememberMutableRemoteInt) সাথে একত্রিত করুন। - ডাইমেনশন এবং টাইপ অ্যাডাপ্ট করুন: লেআউট ডাইমেনশন মাইগ্রেট করার সময়, স্ট্যান্ডার্ড
Dpপরিবর্তেRemoteDp(যেমন,10.rdp) ব্যবহার করে ডিফার্ড লেআউট রেজোলিউশনকে অগ্রাধিকার দিন। এটি নিশ্চিত করে যে সিস্টেম রেন্ডারার ডিসপ্লে করার সময় পিক্সেল ভ্যালু সঠিকভাবে গণনা করে। একইভাবে, স্ট্যান্ডার্ড কোটলিন এবং রিমোট কম্পোজ টাইপগুলিকে নির্বিঘ্নে রূপান্তর করতে রিমোট কম্পোজ এক্সটেনশন ফাংশন (Colorজন্য.rc,Stringজন্য.rs,Dpএর জন্য.rdp) ব্যবহার করুন। - নমুনা কোড পর্যালোচনা করুন: রিমোট কম্পোজে কীভাবে লেআউট তৈরি করতে হয়, সিমান্টিক টাইপোগ্রাফি প্রয়োগ করতে হয় এবং স্টেট পরিচালনা করতে হয় তার বিশদ উদাহরণ দেখতে, Wear OS স্যাম্পলস রিপোজিটরিতে উপলব্ধ অফিসিয়াল নমুনা কোডটি দেখুন।