কমপ্লিকেশন হলো ফিজিক্যাল ও স্মার্টওয়াচ উভয়েরই ওয়াচ ফেসের একটি ফিচার, যা অতিরিক্ত তথ্য প্রদর্শন করে। সাধারণত ব্যবহারকারীই নির্বাচন করেন যে একটি কমপ্লিকেশনে কী তথ্য দেখানো হবে।
সাধারণত জটিলতা বিভিন্ন রূপে দেখা দেয়:
- আয়তক্ষেত্রাকার
- বৃত্তাকার
- ঘড়ির মুখের কিনারা বরাবর বৃত্তচাপ
- পটভূমি, যা ঘড়ির ডায়ালের সম্পূর্ণ অংশ জুড়ে রয়েছে।
Wear OS-এ, কমপ্লিকেশন সিস্টেমকে দুটি ভাগে ভাগ করা যায়:
- জটিলতার ডেটা উৎস
- জটিলতা রেন্ডারিং
উদাহরণস্বরূপ, একটি স্বাস্থ্য ও ফিটনেস অ্যাপ ‘ডেইলি স্টেপস’ নামক একটি কমপ্লিকেশন ডেটা সোর্স প্রয়োগ করতে পারে। এটি WFF ওয়াচ ফেস দ্বারা রেন্ডার করা যেতে পারে।
জটিলতার ক্ষেত্রে ডেটার উৎস
কমপ্লিকেশন ডেটা সোর্স শুধুমাত্র রেন্ডার করার জন্য ডেটা এবং কমপ্লিকেশনের ধরন নির্দিষ্ট করে। ওয়াচ ফেসে ডেটা কীভাবে প্রদর্শিত হবে, তা নির্ধারণে ডেটা সোর্সের কোনো ভূমিকা নেই।
উদাহরণস্বরূপ, স্বাস্থ্য ও ফিটনেস সম্পর্কিত 'দৈনিক পদক্ষেপ' কমপ্লিকেশন ডেটা সোর্সটি থেকে নিম্নলিখিত ডেটা পাওয়া যেতে পারে, যা থেকে বোঝা যায় যে ব্যবহারকারী আজ তার লক্ষ্যমাত্রা ১০,০০০ পদক্ষেপের মধ্যে ২,৪০০ পদক্ষেপ নিয়েছেন:
- ধরণ:
GOAL_PROGRESS - মান:
2400 - লক্ষ্যমান:
10000
লক্ষ্য করুন যে, এই ডেটাতে এমন কিছু নেই যা থেকে বোঝা যায় এটিকে কীভাবে রেন্ডার করা উচিত।
ওয়াচ ফেসটি নির্দিষ্ট করে দেয় যে এটি কী ধরনের কমপ্লিকেশন রেন্ডার করতে সক্ষম। এর ফলেই নির্ধারিত হয় যে ব্যবহারকারীর বেছে নেওয়ার জন্য কোন ডেটা সোর্সগুলো উপলব্ধ থাকবে।
ডেইলি স্টেপস উদাহরণের ক্ষেত্রে, আপনার ওয়াচ ফেস ডেফিনিশনেই আপনি ঠিক করবেন যে Value এবং TargetValue কীভাবে রেন্ডার করা হবে: এটি কি টেক্সট হিসেবে, নাকি প্রোগ্রেস ইন্ডিকেটর হিসেবে? ওয়াচ ফেস ডিজাইনার হিসেবে এই সিদ্ধান্ত আপনাকেই নিতে হবে।
জটিলতা সংজ্ঞায়িত করুন
আপনার ওয়াচ ফেসে কমপ্লিকেশন দেখানোর সুবিধা ব্যবহারকারীদের জন্য মূল্যবান হতে পারে, কারণ এর মাধ্যমে তারা এক নজরে আরও বেশি তথ্য পেতে পারেন এবং তা নিজেদের প্রয়োজন অনুযায়ী কাস্টমাইজ করে নিতে পারেন।
আপনার ওয়াচ ফেসে কতগুলো কমপ্লিকেশন থাকবে, সেগুলোর আকৃতি ও অবস্থান কেমন হবে এবং সেগুলো কী ধরনের ডেটা সাপোর্ট করবে, তা স্থির করুন।
ওয়াচ ফেসে কোনো কমপ্লিকেশনের জন্য নির্ধারিত প্রতিটি স্থানকে একটি ComplicationSlot হিসেবে সংজ্ঞায়িত করা হয়, যার মধ্যে কমপ্লিকেশনটি রেন্ডার করার জন্য একটি সীমাবদ্ধ এলাকা নির্ধারণ করা থাকে:
<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="100" y="100" width="100" height="100"> <BoundingOval x="0" y="0" width="100" height="100" /> <Complication type="SHORT_TEXT"> <!-- Complication content for rendering SHORT_TEXT data goes here --> </Complication> <Complication type="SMALL_IMAGE"> <!-- Complication content for rendering SMALL_IMAGE data goes here --> </Complication> </ComplicationSlot>
অনুরূপ পদ্ধতি আয়তক্ষেত্র এবং উপবৃত্তের মতো অন্যান্য সীমাবদ্ধ আকারের ক্ষেত্রেও প্রয়োগ করা যেতে পারে।
জটিলতার ধরণ এবং ডিফল্টগুলি সেট করুন
কমপ্লিকেশন সিস্টেমটি বিভিন্ন ধরণের বিকল্প প্রদান করে, যা ওয়াচ ফেসকে স্ক্রিনে কোন ধরণের ডেটা প্রদর্শন করতে পারবে তা প্রকাশ করার সুযোগ দেয়। উদাহরণস্বরূপ, পূর্বে দেখানো Arc কমপ্লিকেশনটি SMALL_IMAGE এর মতো ইমেজ-ভিত্তিক কমপ্লিকেশন ডেটা টাইপের জন্য খুব একটা উপযুক্ত নয়, কিন্তু RANGED_VALUE মতো সংখ্যাসূচক ডেটার জন্য এটি খুব ভালোভাবে কাজ করতে পারে।
আপনার ComplicationSlot ডিক্লারেশনে, supportedTypes স্পেস দিয়ে আলাদা করা সেইসব টাইপের তালিকা হিসেবে সেট করুন যেগুলো এই স্লটে রেন্ডার করা যায়।
আপনাকে ComplicationSlot জন্য ডিফল্ট সোর্সও অবশ্যই সেট করতে হবে, যদি না আপনি EMPTY টাইপের অনুমতি দেন, সেক্ষেত্রে ডিফল্ট সেট করা ঐচ্ছিক:
<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="250" y="100" width="100" height="100"> <DefaultProviderPolicy defaultSystemProvider="STEP_COUNT" defaultSystemProviderType="SHORT_TEXT" /> <!-- ... --> </ComplicationSlot>
সিস্টেম প্রোভাইডার নির্দিষ্ট করার পাশাপাশি, আপনি ঐচ্ছিকভাবে নন-সিস্টেম প্রোভাইডারও নির্দিষ্ট করতে পারেন , যেমন থার্ড-পার্টি প্রোভাইডার, যা আগে থেকেই ইনস্টল করা থাকলে ডিফল্টরূপে ব্যবহৃত হবে।
রেন্ডার জটিলতার ডেটা
ComplicationSlot , এর সীমানা এবং ধারণকারী Complication এলিমেন্ট নির্ধারণ করার পর, Complication ডেটা প্রদর্শন করার জন্য PartDraw, PartImage এবং PartText এর মতো স্ট্যান্ডার্ড WFF কম্পোনেন্টগুলো ব্যবহার করুন।
Complication ডেটার অন্তর্গত উপাদানগুলো একটি বিশেষ ডেটা সোর্স— COMPLICATION এ প্রবেশাধিকার পায়, যা কমপ্লিকেশন ডেটা সোর্স দ্বারা নির্ধারিত বিভিন্ন ডেটা প্রোপার্টি সরবরাহ করে।
উদাহরণস্বরূপ, একটি SMALL_IMAGE কমপ্লিকেশন COMPLICATION.SMALL_IMAGE এবং COMPLICATION.SMALL_IMAGE_AMBIENT ভ্যালুগুলো সেট করতে পারে। একটি Image এলিমেন্টে রিসোর্সের পরিবর্তে এগুলো ব্যবহার করা যেতে পারে:
<Complication type="SMALL_IMAGE"> <PartImage x="0" y="0" width="100" height="100"> <Image resource="[COMPLICATION.SMALL_IMAGE]" /> </PartImage> </Complication>
প্রতিটি ভিন্ন কমপ্লিকেশন টাইপের জন্য আলাদা আলাদা প্রপার্টি সেট করার সুযোগ থাকে; প্রতিটির সম্পূর্ণ তালিকার জন্য Complication রেফারেন্স দেখুন। এই উদাহরণটি একটি SHORT_TEXT কমপ্লিকেশন থেকে টেক্সট প্রদর্শন করে:
<Complication type="SHORT_TEXT"> <PartText x="0" y="0" width="100" height="100"> <Text> <Font size="32"> <Template> <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" /> </Template> </Font> </Text> </PartText> </Complication>
জটিলতা উপস্থাপনের সময় উপযোগিতা সর্বাধিক করুন
আপনার ওয়াচ ফেসে ComplicationSlots যোগ করার ক্ষেত্রে বেশ কিছু চ্যালেঞ্জ রয়েছে:
- বিভিন্ন ধরনের কমপ্লিকেশন ডেটা টাইপ রয়েছে। বিভিন্ন অ্যাপ এগুলোর মধ্যে এক বা একাধিক প্রদান করতে পারে।
- প্রতিটি কমপ্লিকেশন ডেটা টাইপের আবশ্যিক প্রোপার্টিগুলোর পাশাপাশি অনেক ঐচ্ছিক প্রোপার্টিও থাকে। বিভিন্ন সংমিশ্রণ বিবেচনা করে, উপলব্ধ প্রোপার্টিগুলো থেকে সবচেয়ে উপযোগী রেন্ডারিং তৈরি করা হয়েছে কিনা তা যাচাই করুন।
এই সমস্যাগুলো সমাধানের জন্য কিছু কৌশল হলো:
- প্রতিটি স্লটের জন্য একাধিক কমপ্লিকেশন টাইপ সমর্থন করুন। উদাহরণস্বরূপ, কমপ্লিকেশন ডেটা সোর্সগুলো দ্বারা
SHORT_TEXTবেশ ব্যাপকভাবে সমর্থিত, তাই বিভিন্ন ধরণের টাইপ সমর্থন করা, যেমন একটি ছোট বৃত্তাকার কমপ্লিকেশনের জন্যSHORT_TEXT RANGED_VALUE, সামঞ্জস্যতা বৃদ্ধি করে। - ওয়াচ ফেস জুড়ে বিভিন্ন ধরনের কমপ্লিকেশন অফার করুন। উদাহরণস্বরূপ, আপনি প্রান্তে অবস্থিত Arc কমপ্লিকেশনগুলিতে
RANGED_VALUEএবংGOAL_PROGRESS, এবং ওয়াচ ফেসের মূল অংশে থাকা বৃত্তাকার কমপ্লিকেশনগুলিতেSHORT_TEXTএবংSMALL_IMAGEসাপোর্ট করতে পারেন। - প্রতিটি ডেটা টাইপের জন্য ঐচ্ছিক উপাদানগুলো পরীক্ষা করুন। উদাহরণস্বরূপ,
SHORT_TEXTঐচ্ছিকভাবে একটি টাইটেল প্রপার্টি এবং একটি ছবি সমর্থন করে। একটি ছবি বা টাইটেল আছে কি নেই, তার উপর নির্ভর করে উপলব্ধ ডেটা রেন্ডার করার জন্য আপনার লেআউট ভিন্ন হতে পারে।
কমপ্লিকেশন হলো ফিজিক্যাল ও স্মার্টওয়াচ উভয়েরই ওয়াচ ফেসের একটি ফিচার, যা অতিরিক্ত তথ্য প্রদর্শন করে। সাধারণত ব্যবহারকারীই নির্বাচন করেন যে একটি কমপ্লিকেশনে কী তথ্য দেখানো হবে।
সাধারণত জটিলতা বিভিন্ন রূপে দেখা দেয়:
- আয়তক্ষেত্রাকার
- বৃত্তাকার
- ঘড়ির মুখের কিনারা বরাবর বৃত্তচাপ
- পটভূমি, যা ঘড়ির ডায়ালের সম্পূর্ণ অংশ জুড়ে রয়েছে।
Wear OS-এ, কমপ্লিকেশন সিস্টেমকে দুটি ভাগে ভাগ করা যায়:
- জটিলতার ডেটা উৎস
- জটিলতা রেন্ডারিং
উদাহরণস্বরূপ, একটি স্বাস্থ্য ও ফিটনেস অ্যাপ ‘ডেইলি স্টেপস’ নামক একটি কমপ্লিকেশন ডেটা সোর্স প্রয়োগ করতে পারে। এটি WFF ওয়াচ ফেস দ্বারা রেন্ডার করা যেতে পারে।
জটিলতার ক্ষেত্রে ডেটার উৎস
কমপ্লিকেশন ডেটা সোর্স শুধুমাত্র রেন্ডার করার জন্য ডেটা এবং কমপ্লিকেশনের ধরন নির্দিষ্ট করে। ওয়াচ ফেসে ডেটা কীভাবে প্রদর্শিত হবে, তা নির্ধারণে ডেটা সোর্সের কোনো ভূমিকা নেই।
উদাহরণস্বরূপ, স্বাস্থ্য ও ফিটনেস সম্পর্কিত 'দৈনিক পদক্ষেপ' কমপ্লিকেশন ডেটা সোর্সটি থেকে নিম্নলিখিত ডেটা পাওয়া যেতে পারে, যা থেকে বোঝা যায় যে ব্যবহারকারী আজ তার লক্ষ্যমাত্রা ১০,০০০ পদক্ষেপের মধ্যে ২,৪০০ পদক্ষেপ নিয়েছেন:
- ধরণ:
GOAL_PROGRESS - মান:
2400 - লক্ষ্যমান:
10000
লক্ষ্য করুন যে, এই ডেটাতে এমন কিছু নেই যা থেকে বোঝা যায় এটিকে কীভাবে রেন্ডার করা উচিত।
ওয়াচ ফেসটি নির্দিষ্ট করে দেয় যে এটি কী ধরনের কমপ্লিকেশন রেন্ডার করতে সক্ষম। এর ফলেই নির্ধারিত হয় যে ব্যবহারকারীর বেছে নেওয়ার জন্য কোন ডেটা সোর্সগুলো উপলব্ধ থাকবে।
ডেইলি স্টেপস উদাহরণের ক্ষেত্রে, আপনার ওয়াচ ফেস ডেফিনিশনেই আপনি ঠিক করবেন যে Value এবং TargetValue কীভাবে রেন্ডার করা হবে: এটি কি টেক্সট হিসেবে, নাকি প্রোগ্রেস ইন্ডিকেটর হিসেবে? ওয়াচ ফেস ডিজাইনার হিসেবে এই সিদ্ধান্ত আপনাকেই নিতে হবে।
জটিলতা সংজ্ঞায়িত করুন
আপনার ওয়াচ ফেসে কমপ্লিকেশন দেখানোর সুবিধা ব্যবহারকারীদের জন্য মূল্যবান হতে পারে, কারণ এর মাধ্যমে তারা এক নজরে আরও বেশি তথ্য পেতে পারেন এবং তা নিজেদের প্রয়োজন অনুযায়ী কাস্টমাইজ করে নিতে পারেন।
আপনার ওয়াচ ফেসে কতগুলো কমপ্লিকেশন থাকবে, সেগুলোর আকৃতি ও অবস্থান কেমন হবে এবং সেগুলো কী ধরনের ডেটা সাপোর্ট করবে, তা স্থির করুন।
ওয়াচ ফেসে কোনো কমপ্লিকেশনের জন্য নির্ধারিত প্রতিটি স্থানকে একটি ComplicationSlot হিসেবে সংজ্ঞায়িত করা হয়, যার মধ্যে কমপ্লিকেশনটি রেন্ডার করার জন্য একটি সীমাবদ্ধ এলাকা নির্ধারণ করা থাকে:
<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="100" y="100" width="100" height="100"> <BoundingOval x="0" y="0" width="100" height="100" /> <Complication type="SHORT_TEXT"> <!-- Complication content for rendering SHORT_TEXT data goes here --> </Complication> <Complication type="SMALL_IMAGE"> <!-- Complication content for rendering SMALL_IMAGE data goes here --> </Complication> </ComplicationSlot>
অনুরূপ পদ্ধতি আয়তক্ষেত্র এবং উপবৃত্তের মতো অন্যান্য সীমাবদ্ধ আকারের ক্ষেত্রেও প্রয়োগ করা যেতে পারে।
জটিলতার ধরণ এবং ডিফল্টগুলি সেট করুন
কমপ্লিকেশন সিস্টেমটি বিভিন্ন ধরণের বিকল্প প্রদান করে, যা ওয়াচ ফেসকে স্ক্রিনে কোন ধরণের ডেটা প্রদর্শন করতে পারবে তা প্রকাশ করার সুযোগ দেয়। উদাহরণস্বরূপ, পূর্বে দেখানো Arc কমপ্লিকেশনটি SMALL_IMAGE এর মতো ইমেজ-ভিত্তিক কমপ্লিকেশন ডেটা টাইপের জন্য খুব একটা উপযুক্ত নয়, কিন্তু RANGED_VALUE মতো সংখ্যাসূচক ডেটার জন্য এটি খুব ভালোভাবে কাজ করতে পারে।
আপনার ComplicationSlot ডিক্লারেশনে, supportedTypes স্পেস দিয়ে আলাদা করা সেইসব টাইপের তালিকা হিসেবে সেট করুন যেগুলো এই স্লটে রেন্ডার করা যায়।
আপনাকে ComplicationSlot জন্য ডিফল্ট সোর্সও অবশ্যই সেট করতে হবে, যদি না আপনি EMPTY টাইপের অনুমতি দেন, সেক্ষেত্রে ডিফল্ট সেট করা ঐচ্ছিক:
<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="250" y="100" width="100" height="100"> <DefaultProviderPolicy defaultSystemProvider="STEP_COUNT" defaultSystemProviderType="SHORT_TEXT" /> <!-- ... --> </ComplicationSlot>
সিস্টেম প্রোভাইডার নির্দিষ্ট করার পাশাপাশি, আপনি ঐচ্ছিকভাবে নন-সিস্টেম প্রোভাইডারও নির্দিষ্ট করতে পারেন , যেমন থার্ড-পার্টি প্রোভাইডার, যা আগে থেকেই ইনস্টল করা থাকলে ডিফল্টরূপে ব্যবহৃত হবে।
রেন্ডার জটিলতার ডেটা
ComplicationSlot , এর সীমানা এবং ধারণকারী Complication এলিমেন্ট নির্ধারণ করার পর, Complication ডেটা প্রদর্শন করার জন্য PartDraw, PartImage এবং PartText এর মতো স্ট্যান্ডার্ড WFF কম্পোনেন্টগুলো ব্যবহার করুন।
Complication ডেটার অন্তর্গত উপাদানগুলো একটি বিশেষ ডেটা সোর্স— COMPLICATION এ প্রবেশাধিকার পায়, যা কমপ্লিকেশন ডেটা সোর্স দ্বারা নির্ধারিত বিভিন্ন ডেটা প্রোপার্টি সরবরাহ করে।
উদাহরণস্বরূপ, একটি SMALL_IMAGE কমপ্লিকেশন COMPLICATION.SMALL_IMAGE এবং COMPLICATION.SMALL_IMAGE_AMBIENT ভ্যালুগুলো সেট করতে পারে। একটি Image এলিমেন্টে রিসোর্সের পরিবর্তে এগুলো ব্যবহার করা যেতে পারে:
<Complication type="SMALL_IMAGE"> <PartImage x="0" y="0" width="100" height="100"> <Image resource="[COMPLICATION.SMALL_IMAGE]" /> </PartImage> </Complication>
প্রতিটি ভিন্ন কমপ্লিকেশন টাইপের জন্য আলাদা আলাদা প্রপার্টি সেট করার সুযোগ থাকে; প্রতিটির সম্পূর্ণ তালিকার জন্য Complication রেফারেন্স দেখুন। এই উদাহরণটি একটি SHORT_TEXT কমপ্লিকেশন থেকে টেক্সট প্রদর্শন করে:
<Complication type="SHORT_TEXT"> <PartText x="0" y="0" width="100" height="100"> <Text> <Font size="32"> <Template> <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" /> </Template> </Font> </Text> </PartText> </Complication>
জটিলতা উপস্থাপনের সময় উপযোগিতা সর্বাধিক করুন
আপনার ওয়াচ ফেসে ComplicationSlots যোগ করার ক্ষেত্রে বেশ কিছু চ্যালেঞ্জ রয়েছে:
- বিভিন্ন ধরনের কমপ্লিকেশন ডেটা টাইপ রয়েছে। বিভিন্ন অ্যাপ এগুলোর মধ্যে এক বা একাধিক প্রদান করতে পারে।
- প্রতিটি কমপ্লিকেশন ডেটা টাইপের আবশ্যিক প্রোপার্টিগুলোর পাশাপাশি অনেক ঐচ্ছিক প্রোপার্টিও থাকে। বিভিন্ন সংমিশ্রণ বিবেচনা করে, উপলব্ধ প্রোপার্টিগুলো থেকে সবচেয়ে উপযোগী রেন্ডারিং তৈরি করা হয়েছে কিনা তা যাচাই করুন।
এই সমস্যাগুলো সমাধানের জন্য কিছু কৌশল হলো:
- প্রতিটি স্লটের জন্য একাধিক কমপ্লিকেশন টাইপ সমর্থন করুন। উদাহরণস্বরূপ, কমপ্লিকেশন ডেটা সোর্সগুলো দ্বারা
SHORT_TEXTবেশ ব্যাপকভাবে সমর্থিত, তাই বিভিন্ন ধরণের টাইপ সমর্থন করা, যেমন একটি ছোট বৃত্তাকার কমপ্লিকেশনের জন্যSHORT_TEXT RANGED_VALUE, সামঞ্জস্যতা বৃদ্ধি করে। - ওয়াচ ফেস জুড়ে বিভিন্ন ধরনের কমপ্লিকেশন অফার করুন। উদাহরণস্বরূপ, আপনি প্রান্তে অবস্থিত Arc কমপ্লিকেশনগুলিতে
RANGED_VALUEএবংGOAL_PROGRESS, এবং ওয়াচ ফেসের মূল অংশে থাকা বৃত্তাকার কমপ্লিকেশনগুলিতেSHORT_TEXTএবংSMALL_IMAGEসাপোর্ট করতে পারেন। - প্রতিটি ডেটা টাইপের জন্য ঐচ্ছিক উপাদানগুলো পরীক্ষা করুন। উদাহরণস্বরূপ,
SHORT_TEXTঐচ্ছিকভাবে একটি টাইটেল প্রপার্টি এবং একটি ছবি সমর্থন করে। একটি ছবি বা টাইটেল আছে কি নেই, তার উপর নির্ভর করে উপলব্ধ ডেটা রেন্ডার করার জন্য আপনার লেআউট ভিন্ন হতে পারে।
কমপ্লিকেশন হলো ফিজিক্যাল ও স্মার্টওয়াচ উভয়েরই ওয়াচ ফেসের একটি ফিচার, যা অতিরিক্ত তথ্য প্রদর্শন করে। সাধারণত ব্যবহারকারীই নির্বাচন করেন যে একটি কমপ্লিকেশনে কী তথ্য দেখানো হবে।
সাধারণত জটিলতা বিভিন্ন রূপে দেখা দেয়:
- আয়তক্ষেত্রাকার
- বৃত্তাকার
- ঘড়ির মুখের কিনারা বরাবর বৃত্তচাপ
- পটভূমি, যা ঘড়ির ডায়ালের সম্পূর্ণ অংশ জুড়ে রয়েছে।
Wear OS-এ, কমপ্লিকেশন সিস্টেমকে দুটি ভাগে ভাগ করা যায়:
- জটিলতার ডেটা উৎস
- জটিলতা রেন্ডারিং
উদাহরণস্বরূপ, একটি স্বাস্থ্য ও ফিটনেস অ্যাপ ‘ডেইলি স্টেপস’ নামক একটি কমপ্লিকেশন ডেটা সোর্স প্রয়োগ করতে পারে। এটি WFF ওয়াচ ফেস দ্বারা রেন্ডার করা যেতে পারে।
জটিলতার ক্ষেত্রে ডেটার উৎস
কমপ্লিকেশন ডেটা সোর্স শুধুমাত্র রেন্ডার করার জন্য ডেটা এবং কমপ্লিকেশনের ধরন নির্দিষ্ট করে। ওয়াচ ফেসে ডেটা কীভাবে প্রদর্শিত হবে, তা নির্ধারণে ডেটা সোর্সের কোনো ভূমিকা নেই।
উদাহরণস্বরূপ, স্বাস্থ্য ও ফিটনেস সম্পর্কিত 'দৈনিক পদক্ষেপ' কমপ্লিকেশন ডেটা সোর্সটি থেকে নিম্নলিখিত ডেটা পাওয়া যেতে পারে, যা থেকে বোঝা যায় যে ব্যবহারকারী আজ তার লক্ষ্যমাত্রা ১০,০০০ পদক্ষেপের মধ্যে ২,৪০০ পদক্ষেপ নিয়েছেন:
- ধরণ:
GOAL_PROGRESS - মান:
2400 - লক্ষ্যমান:
10000
লক্ষ্য করুন যে, এই ডেটাতে এমন কিছু নেই যা থেকে বোঝা যায় এটিকে কীভাবে রেন্ডার করা উচিত।
ওয়াচ ফেসটি নির্দিষ্ট করে দেয় যে এটি কী ধরনের কমপ্লিকেশন রেন্ডার করতে সক্ষম। এর ফলেই নির্ধারিত হয় যে ব্যবহারকারীর বেছে নেওয়ার জন্য কোন ডেটা সোর্সগুলো উপলব্ধ থাকবে।
ডেইলি স্টেপস উদাহরণের ক্ষেত্রে, আপনার ওয়াচ ফেস ডেফিনিশনেই আপনি ঠিক করবেন যে Value এবং TargetValue কীভাবে রেন্ডার করা হবে: এটি কি টেক্সট হিসেবে, নাকি প্রোগ্রেস ইন্ডিকেটর হিসেবে? ওয়াচ ফেস ডিজাইনার হিসেবে এই সিদ্ধান্ত আপনাকেই নিতে হবে।
জটিলতা সংজ্ঞায়িত করুন
আপনার ওয়াচ ফেসে কমপ্লিকেশন দেখানোর সুবিধা ব্যবহারকারীদের জন্য মূল্যবান হতে পারে, কারণ এর মাধ্যমে তারা এক নজরে আরও বেশি তথ্য পেতে পারেন এবং তা নিজেদের প্রয়োজন অনুযায়ী কাস্টমাইজ করে নিতে পারেন।
আপনার ওয়াচ ফেসে কতগুলো কমপ্লিকেশন থাকবে, সেগুলোর আকৃতি ও অবস্থান কেমন হবে এবং সেগুলো কী ধরনের ডেটা সাপোর্ট করবে, তা স্থির করুন।
ওয়াচ ফেসে কোনো কমপ্লিকেশনের জন্য নির্ধারিত প্রতিটি স্থানকে একটি ComplicationSlot হিসেবে সংজ্ঞায়িত করা হয়, যার মধ্যে কমপ্লিকেশনটি রেন্ডার করার জন্য একটি সীমাবদ্ধ এলাকা নির্ধারণ করা থাকে:
<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="100" y="100" width="100" height="100"> <BoundingOval x="0" y="0" width="100" height="100" /> <Complication type="SHORT_TEXT"> <!-- Complication content for rendering SHORT_TEXT data goes here --> </Complication> <Complication type="SMALL_IMAGE"> <!-- Complication content for rendering SMALL_IMAGE data goes here --> </Complication> </ComplicationSlot>
অনুরূপ পদ্ধতি আয়তক্ষেত্র এবং উপবৃত্তের মতো অন্যান্য সীমাবদ্ধ আকারের ক্ষেত্রেও প্রয়োগ করা যেতে পারে।
জটিলতার ধরণ এবং ডিফল্টগুলি সেট করুন
কমপ্লিকেশন সিস্টেমটি বিভিন্ন ধরণের বিকল্প প্রদান করে, যা ওয়াচ ফেসকে স্ক্রিনে কোন ধরণের ডেটা প্রদর্শন করতে পারবে তা প্রকাশ করার সুযোগ দেয়। উদাহরণস্বরূপ, পূর্বে দেখানো Arc কমপ্লিকেশনটি SMALL_IMAGE এর মতো ইমেজ-ভিত্তিক কমপ্লিকেশন ডেটা টাইপের জন্য খুব একটা উপযুক্ত নয়, কিন্তু RANGED_VALUE মতো সংখ্যাসূচক ডেটার জন্য এটি খুব ভালোভাবে কাজ করতে পারে।
আপনার ComplicationSlot ডিক্লারেশনে, supportedTypes স্পেস দিয়ে আলাদা করা সেইসব টাইপের তালিকা হিসেবে সেট করুন যেগুলো এই স্লটে রেন্ডার করা যায়।
আপনাকে ComplicationSlot জন্য ডিফল্ট সোর্সও অবশ্যই সেট করতে হবে, যদি না আপনি EMPTY টাইপের অনুমতি দেন, সেক্ষেত্রে ডিফল্ট সেট করা ঐচ্ছিক:
<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="250" y="100" width="100" height="100"> <DefaultProviderPolicy defaultSystemProvider="STEP_COUNT" defaultSystemProviderType="SHORT_TEXT" /> <!-- ... --> </ComplicationSlot>
সিস্টেম প্রোভাইডার নির্দিষ্ট করার পাশাপাশি, আপনি ঐচ্ছিকভাবে নন-সিস্টেম প্রোভাইডারও নির্দিষ্ট করতে পারেন , যেমন থার্ড-পার্টি প্রোভাইডার, যা আগে থেকেই ইনস্টল করা থাকলে ডিফল্টরূপে ব্যবহৃত হবে।
রেন্ডার জটিলতার ডেটা
ComplicationSlot , এর সীমানা এবং ধারণকারী Complication এলিমেন্ট নির্ধারণ করার পর, Complication ডেটা প্রদর্শন করার জন্য PartDraw, PartImage এবং PartText এর মতো স্ট্যান্ডার্ড WFF কম্পোনেন্টগুলো ব্যবহার করুন।
Complication ডেটার অন্তর্গত উপাদানগুলো একটি বিশেষ ডেটা সোর্স— COMPLICATION এ প্রবেশাধিকার পায়, যা কমপ্লিকেশন ডেটা সোর্স দ্বারা নির্ধারিত বিভিন্ন ডেটা প্রোপার্টি সরবরাহ করে।
উদাহরণস্বরূপ, একটি SMALL_IMAGE কমপ্লিকেশন COMPLICATION.SMALL_IMAGE এবং COMPLICATION.SMALL_IMAGE_AMBIENT ভ্যালুগুলো সেট করতে পারে। একটি Image এলিমেন্টে রিসোর্সের পরিবর্তে এগুলো ব্যবহার করা যেতে পারে:
<Complication type="SMALL_IMAGE"> <PartImage x="0" y="0" width="100" height="100"> <Image resource="[COMPLICATION.SMALL_IMAGE]" /> </PartImage> </Complication>
প্রতিটি ভিন্ন কমপ্লিকেশন টাইপের জন্য আলাদা আলাদা প্রপার্টি সেট করার সুযোগ থাকে; প্রতিটির সম্পূর্ণ তালিকার জন্য Complication রেফারেন্স দেখুন। এই উদাহরণটি একটি SHORT_TEXT কমপ্লিকেশন থেকে টেক্সট প্রদর্শন করে:
<Complication type="SHORT_TEXT"> <PartText x="0" y="0" width="100" height="100"> <Text> <Font size="32"> <Template> <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" /> </Template> </Font> </Text> </PartText> </Complication>
জটিলতা উপস্থাপনের সময় উপযোগিতা সর্বাধিক করুন
আপনার ওয়াচ ফেসে ComplicationSlots যোগ করার ক্ষেত্রে বেশ কিছু চ্যালেঞ্জ রয়েছে:
- বিভিন্ন ধরনের কমপ্লিকেশন ডেটা টাইপ রয়েছে। বিভিন্ন অ্যাপ এগুলোর মধ্যে এক বা একাধিক প্রদান করতে পারে।
- প্রতিটি কমপ্লিকেশন ডেটা টাইপের আবশ্যিক প্রোপার্টিগুলোর পাশাপাশি অনেক ঐচ্ছিক প্রোপার্টিও থাকে। বিভিন্ন সংমিশ্রণ বিবেচনা করে, উপলব্ধ প্রোপার্টিগুলো থেকে সবচেয়ে উপযোগী রেন্ডারিং তৈরি করা হয়েছে কিনা তা যাচাই করুন।
এই সমস্যাগুলো সমাধানের জন্য কিছু কৌশল হলো:
- প্রতিটি স্লটের জন্য একাধিক কমপ্লিকেশন টাইপ সমর্থন করুন। উদাহরণস্বরূপ, কমপ্লিকেশন ডেটা সোর্সগুলো দ্বারা
SHORT_TEXTবেশ ব্যাপকভাবে সমর্থিত, তাই বিভিন্ন ধরণের টাইপ সমর্থন করা, যেমন একটি ছোট বৃত্তাকার কমপ্লিকেশনের জন্যSHORT_TEXT RANGED_VALUE, সামঞ্জস্যতা বৃদ্ধি করে। - ওয়াচ ফেস জুড়ে বিভিন্ন ধরনের কমপ্লিকেশন অফার করুন। উদাহরণস্বরূপ, আপনি প্রান্তে অবস্থিত Arc কমপ্লিকেশনগুলিতে
RANGED_VALUEএবংGOAL_PROGRESS, এবং ওয়াচ ফেসের মূল অংশে থাকা বৃত্তাকার কমপ্লিকেশনগুলিতেSHORT_TEXTএবংSMALL_IMAGEসাপোর্ট করতে পারেন। - প্রতিটি ডেটা টাইপের জন্য ঐচ্ছিক উপাদানগুলো পরীক্ষা করুন। উদাহরণস্বরূপ,
SHORT_TEXTঐচ্ছিকভাবে একটি টাইটেল প্রপার্টি এবং একটি ছবি সমর্থন করে। একটি ছবি বা টাইটেল আছে কি নেই, তার উপর নির্ভর করে উপলব্ধ ডেটা রেন্ডার করার জন্য আপনার লেআউট ভিন্ন হতে পারে।
কমপ্লিকেশন হলো ফিজিক্যাল ও স্মার্টওয়াচ উভয়েরই ওয়াচ ফেসের একটি ফিচার, যা অতিরিক্ত তথ্য প্রদর্শন করে। সাধারণত ব্যবহারকারীই নির্বাচন করেন যে একটি কমপ্লিকেশনে কী তথ্য দেখানো হবে।
সাধারণত জটিলতা বিভিন্ন রূপে দেখা দেয়:
- আয়তক্ষেত্রাকার
- বৃত্তাকার
- ঘড়ির মুখের কিনারা বরাবর বৃত্তচাপ
- পটভূমি, যা ঘড়ির ডায়ালের সম্পূর্ণ অংশ জুড়ে রয়েছে।
Wear OS-এ, কমপ্লিকেশন সিস্টেমকে দুটি ভাগে ভাগ করা যায়:
- জটিলতার ডেটা উৎস
- জটিলতা রেন্ডারিং
উদাহরণস্বরূপ, একটি স্বাস্থ্য ও ফিটনেস অ্যাপ ‘ডেইলি স্টেপস’ নামক একটি কমপ্লিকেশন ডেটা সোর্স প্রয়োগ করতে পারে। এটি WFF ওয়াচ ফেস দ্বারা রেন্ডার করা যেতে পারে।
জটিলতার ক্ষেত্রে ডেটার উৎস
কমপ্লিকেশন ডেটা সোর্স শুধুমাত্র রেন্ডার করার জন্য ডেটা এবং কমপ্লিকেশনের ধরন নির্দিষ্ট করে। ওয়াচ ফেসে ডেটা কীভাবে প্রদর্শিত হবে, তা নির্ধারণে ডেটা সোর্সের কোনো ভূমিকা নেই।
উদাহরণস্বরূপ, স্বাস্থ্য ও ফিটনেস সম্পর্কিত 'দৈনিক পদক্ষেপ' কমপ্লিকেশন ডেটা সোর্সটি থেকে নিম্নলিখিত ডেটা পাওয়া যেতে পারে, যা থেকে বোঝা যায় যে ব্যবহারকারী আজ তার লক্ষ্যমাত্রা ১০,০০০ পদক্ষেপের মধ্যে ২,৪০০ পদক্ষেপ নিয়েছেন:
- ধরণ:
GOAL_PROGRESS - মান:
2400 - লক্ষ্যমান:
10000
লক্ষ্য করুন যে, এই ডেটাতে এমন কিছু নেই যা থেকে বোঝা যায় এটিকে কীভাবে রেন্ডার করা উচিত।
ওয়াচ ফেসটি নির্দিষ্ট করে দেয় যে এটি কী ধরনের কমপ্লিকেশন রেন্ডার করতে সক্ষম। এর ফলেই নির্ধারিত হয় যে ব্যবহারকারীর বেছে নেওয়ার জন্য কোন ডেটা সোর্সগুলো উপলব্ধ থাকবে।
ডেইলি স্টেপস উদাহরণের ক্ষেত্রে, আপনার ওয়াচ ফেস ডেফিনিশনেই আপনি ঠিক করবেন যে Value এবং TargetValue কীভাবে রেন্ডার করা হবে: এটি কি টেক্সট হিসেবে, নাকি প্রোগ্রেস ইন্ডিকেটর হিসেবে? ওয়াচ ফেস ডিজাইনার হিসেবে এই সিদ্ধান্ত আপনাকেই নিতে হবে।
জটিলতা সংজ্ঞায়িত করুন
আপনার ওয়াচ ফেসে কমপ্লিকেশন দেখানোর সুবিধা ব্যবহারকারীদের জন্য মূল্যবান হতে পারে, কারণ এর মাধ্যমে তারা এক নজরে আরও বেশি তথ্য পেতে পারেন এবং তা নিজেদের প্রয়োজন অনুযায়ী কাস্টমাইজ করে নিতে পারেন।
আপনার ওয়াচ ফেসে কতগুলো কমপ্লিকেশন থাকবে, সেগুলোর আকৃতি ও অবস্থান কেমন হবে এবং সেগুলো কী ধরনের ডেটা সাপোর্ট করবে, তা স্থির করুন।
ওয়াচ ফেসে কোনো কমপ্লিকেশনের জন্য নির্ধারিত প্রতিটি স্থানকে একটি ComplicationSlot হিসেবে সংজ্ঞায়িত করা হয়, যার মধ্যে কমপ্লিকেশনটি রেন্ডার করার জন্য একটি সীমাবদ্ধ এলাকা নির্ধারণ করা থাকে:
<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="100" y="100" width="100" height="100"> <BoundingOval x="0" y="0" width="100" height="100" /> <Complication type="SHORT_TEXT"> <!-- Complication content for rendering SHORT_TEXT data goes here --> </Complication> <Complication type="SMALL_IMAGE"> <!-- Complication content for rendering SMALL_IMAGE data goes here --> </Complication> </ComplicationSlot>
অনুরূপ পদ্ধতি আয়তক্ষেত্র এবং উপবৃত্তের মতো অন্যান্য সীমাবদ্ধ আকারের ক্ষেত্রেও প্রয়োগ করা যেতে পারে।
জটিলতার ধরণ এবং ডিফল্টগুলি সেট করুন
কমপ্লিকেশন সিস্টেমটি বিভিন্ন ধরণের বিকল্প প্রদান করে, যা ওয়াচ ফেসকে স্ক্রিনে কোন ধরণের ডেটা প্রদর্শন করতে পারবে তা প্রকাশ করার সুযোগ দেয়। উদাহরণস্বরূপ, পূর্বে দেখানো Arc কমপ্লিকেশনটি SMALL_IMAGE এর মতো ইমেজ-ভিত্তিক কমপ্লিকেশন ডেটা টাইপের জন্য খুব একটা উপযুক্ত নয়, কিন্তু RANGED_VALUE মতো সংখ্যাসূচক ডেটার জন্য এটি খুব ভালোভাবে কাজ করতে পারে।
আপনার ComplicationSlot ডিক্লারেশনে, supportedTypes স্পেস দিয়ে আলাদা করা সেইসব টাইপের তালিকা হিসেবে সেট করুন যেগুলো এই স্লটে রেন্ডার করা যায়।
আপনাকে ComplicationSlot জন্য ডিফল্ট সোর্সও অবশ্যই সেট করতে হবে, যদি না আপনি EMPTY টাইপের অনুমতি দেন, সেক্ষেত্রে ডিফল্ট সেট করা ঐচ্ছিক:
<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="250" y="100" width="100" height="100"> <DefaultProviderPolicy defaultSystemProvider="STEP_COUNT" defaultSystemProviderType="SHORT_TEXT" /> <!-- ... --> </ComplicationSlot>
সিস্টেম প্রোভাইডার নির্দিষ্ট করার পাশাপাশি, আপনি ঐচ্ছিকভাবে নন-সিস্টেম প্রোভাইডারও নির্দিষ্ট করতে পারেন , যেমন থার্ড-পার্টি প্রোভাইডার, যা আগে থেকেই ইনস্টল করা থাকলে ডিফল্টরূপে ব্যবহৃত হবে।
রেন্ডার জটিলতার ডেটা
ComplicationSlot , এর সীমানা এবং ধারণকারী Complication এলিমেন্ট নির্ধারণ করার পর, Complication ডেটা প্রদর্শন করার জন্য PartDraw, PartImage এবং PartText এর মতো স্ট্যান্ডার্ড WFF কম্পোনেন্টগুলো ব্যবহার করুন।
Complication ডেটার অন্তর্গত উপাদানগুলো একটি বিশেষ ডেটা সোর্স— COMPLICATION এ প্রবেশাধিকার পায়, যা কমপ্লিকেশন ডেটা সোর্স দ্বারা নির্ধারিত বিভিন্ন ডেটা প্রোপার্টি সরবরাহ করে।
উদাহরণস্বরূপ, একটি SMALL_IMAGE কমপ্লিকেশন COMPLICATION.SMALL_IMAGE এবং COMPLICATION.SMALL_IMAGE_AMBIENT ভ্যালুগুলো সেট করতে পারে। একটি Image এলিমেন্টে রিসোর্সের পরিবর্তে এগুলো ব্যবহার করা যেতে পারে:
<Complication type="SMALL_IMAGE"> <PartImage x="0" y="0" width="100" height="100"> <Image resource="[COMPLICATION.SMALL_IMAGE]" /> </PartImage> </Complication>
প্রতিটি ভিন্ন কমপ্লিকেশন টাইপের জন্য আলাদা আলাদা প্রপার্টি সেট করার সুযোগ থাকে; প্রতিটির সম্পূর্ণ তালিকার জন্য Complication রেফারেন্স দেখুন। এই উদাহরণটি একটি SHORT_TEXT কমপ্লিকেশন থেকে টেক্সট প্রদর্শন করে:
<Complication type="SHORT_TEXT"> <PartText x="0" y="0" width="100" height="100"> <Text> <Font size="32"> <Template> <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" /> </Template> </Font> </Text> </PartText> </Complication>
জটিলতা উপস্থাপনের সময় উপযোগিতা সর্বাধিক করুন
আপনার ওয়াচ ফেসে ComplicationSlots যোগ করার ক্ষেত্রে বেশ কিছু চ্যালেঞ্জ রয়েছে:
- বিভিন্ন ধরনের কমপ্লিকেশন ডেটা টাইপ রয়েছে। বিভিন্ন অ্যাপ এগুলোর মধ্যে এক বা একাধিক প্রদান করতে পারে।
- প্রতিটি কমপ্লিকেশন ডেটা টাইপের আবশ্যিক প্রোপার্টিগুলোর পাশাপাশি অনেক ঐচ্ছিক প্রোপার্টিও থাকে। বিভিন্ন সংমিশ্রণ বিবেচনা করে, উপলব্ধ প্রোপার্টিগুলো থেকে সবচেয়ে উপযোগী রেন্ডারিং তৈরি করা হয়েছে কিনা তা যাচাই করুন।
এই সমস্যাগুলো সমাধানের জন্য কিছু কৌশল হলো:
- প্রতিটি স্লটের জন্য একাধিক কমপ্লিকেশন টাইপ সমর্থন করুন। উদাহরণস্বরূপ, কমপ্লিকেশন ডেটা সোর্সগুলো দ্বারা
SHORT_TEXTবেশ ব্যাপকভাবে সমর্থিত, তাই বিভিন্ন ধরণের টাইপ সমর্থন করা, যেমন একটি ছোট বৃত্তাকার কমপ্লিকেশনের জন্যSHORT_TEXT RANGED_VALUE, সামঞ্জস্যতা বৃদ্ধি করে। - ওয়াচ ফেস জুড়ে বিভিন্ন ধরনের কমপ্লিকেশন অফার করুন। উদাহরণস্বরূপ, আপনি প্রান্তে অবস্থিত Arc কমপ্লিকেশনগুলিতে
RANGED_VALUEএবংGOAL_PROGRESS, এবং ওয়াচ ফেসের মূল অংশে থাকা বৃত্তাকার কমপ্লিকেশনগুলিতেSHORT_TEXTএবংSMALL_IMAGEসাপোর্ট করতে পারেন। - প্রতিটি ডেটা টাইপের জন্য ঐচ্ছিক উপাদানগুলো পরীক্ষা করুন। উদাহরণস্বরূপ,
SHORT_TEXTঐচ্ছিকভাবে একটি টাইটেল প্রপার্টি এবং একটি ছবি সমর্থন করে। একটি ছবি বা টাইটেল আছে কি নেই, তার উপর নির্ভর করে উপলব্ধ ডেটা রেন্ডার করার জন্য আপনার লেআউট ভিন্ন হতে পারে।