একটি প্যানেল তার দখলকৃত স্থানের বৈশিষ্ট্য বর্ণনা করে এবং একটি অ্যাপ কন্টেইনার হিসেবে কাজ করে। প্যানেল সংজ্ঞায়িত করার জন্য আপনি এক্সএমএল (XML) কনফিগারেশন ব্যবহার করেন, যা ইউআই (UI) কাস্টমাইজ করার জন্য একটি নমনীয় এবং কোড-মুক্ত পদ্ধতি প্রদান করে। ইনস্ট্যান্স এবং স্টেটগুলো পরিচালনা করার জন্য, সিস্টেম সংজ্ঞায়িত প্যানেলগুলোকে ট্র্যাক করে।
প্যানেল তালিকা
সিস্টেম UI তার প্যানেলগুলির সংজ্ঞা window_states নামের একটি অ্যারে রিসোর্স থেকে লোড করে। এই রিসোর্স অ্যারেটি সেই XML ফাইলগুলিকে নির্দেশ করে, যেখানে প্রতিটি প্যানেলের কনফিগারেশন সংজ্ঞায়িত করা থাকে। এই কেন্দ্রীভূত পদ্ধতির অর্থ হলো, স্কেলেবল UI দ্বারা পরিচালিত প্যানেলগুলি উদ্দেশ্য অনুযায়ী লোড হয় এবং সিস্টেম ব্যবহারের জন্য প্রস্তুত থাকে।
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="window_states">
<item>@xml/app_panel</item>
<item>@xml/back_panel</item>
...
</array>
</resources>
প্যানেলের সংজ্ঞা
স্কেলেবল UI ফ্রেমওয়ার্কের প্রতিটি প্যানেল <TaskPanel> বা <DecorPanel> নামের একটি XML ট্যাগ দিয়ে সংজ্ঞায়িত করা হয়। <TaskPanel> একটি অ্যাপ কন্টেইনারের বৈশিষ্ট্য বর্ণনা করে, অন্যদিকে <DecorPanel> একটি ভিউ কন্টেইনারের বৈশিষ্ট্য বর্ণনা করে। সিস্টেম UI এই প্যানেল ডেফিনিশনগুলো লোড করে এবং অন্য কোনো কনফিগারেশন লোড না হওয়া পর্যন্ত প্যানেলগুলোকে ট্র্যাক করে। উদাহরণস্বরূপ, রোটেশনের কারণে কনফিগারেশন পরিবর্তন বা একটি সুস্পষ্ট সিস্টেম অনুরোধের মাধ্যমে এটি হতে পারে। <TaskPanel> এবং <DecorPanel> কনফিগারযোগ্য UI কম্পোনেন্টের মাধ্যমে একটি কাস্টমাইজড অভিজ্ঞতা তৈরির জন্য ভিত্তিগত উপাদান হিসেবে কাজ করে।
XML অ্যাট্রিবিউট
<TaskPanel> ট্যাগে এই অ্যাট্রিবিউটগুলো থাকতে পারে, যা ব্যবহার করে স্টেট ও ট্রানজিশন নির্ধারণ করা যায়।
| বৈশিষ্ট্য | অবস্থা | বর্ণনা |
|---|---|---|
id | বাধ্যতামূলক | প্যানেলের জন্য একটি অনন্য শনাক্তকারী নির্দিষ্ট করে। এই অ্যাট্রিবিউটটি PanelPool থেকে প্যানেলটি পুনরুদ্ধার করতে এবং সিস্টেমের মধ্যে এর অবস্থা পরিচালনা করতে ব্যবহৃত হয়। |
role | বাধ্যতামূলক | সিস্টেমে প্যানেলটির উদ্দেশ্য বা কার্যকারিতা নির্ধারণ করে। এই মানটি একটি স্ট্রিং রিসোর্স, কম্পোনেন্টের নামগুলোর একটি স্ট্রিং অ্যারে, অথবা একটি লেআউট আইডি নির্দেশ করতে পারে। উদাহরণস্বরূপ, এটি এমন স্থায়ী অ্যাক্টিভিটিগুলো নির্ধারণ করতে পারে যা প্যানেলে সর্বদা প্রদর্শিত হওয়া উচিত, অথবা এমন একটি লেআউট নির্ধারণ করতে পারে যা ইনফ্লেট করা হবে। |
defaultVariant | ঐচ্ছিক | প্যানেলটি লোড হওয়ার সময় প্রাথমিকভাবে যে ভ্যারিয়েন্টটি গ্রহণ করবে, তার আইডি নির্দিষ্ট করে। যদি এটি নির্দিষ্ট করা না থাকে, তবে সিস্টেমটি প্রথম সংজ্ঞায়িত ভ্যারিয়েন্টটিকে ডিফল্ট হিসেবে ব্যবহার করতে পারে। |
displayId | ঐচ্ছিক | যে ডিসপ্লেতে প্যানেলটি প্রদর্শিত হওয়ার কথা, তার আইডি নির্দিষ্ট করে। |
defaultLayer | ঐচ্ছিক | প্যানেলের ভ্যারিয়েন্টগুলো যদি সুস্পষ্টভাবে কোনো লেয়ার নির্ধারণ না করে, তবে সেগুলোর জন্য একটি ডিফল্ট Z-অর্ডার নির্দিষ্ট করে দেওয়া যেতে পারে। |
controller | ঐচ্ছিক, পরিবর্তন সাপেক্ষ | এটি এমন একটি রিসোর্সকে (সাধারণত একটি XML ID) নির্দেশ করে, যা একটি প্যানেল-নির্দিষ্ট কন্ট্রোলারকে সংজ্ঞায়িত করে এবং এর মাধ্যমে কাস্টম প্যানেল কন্ট্রোলারগুলিতে কনফিগারেশন মান সংরক্ষণ ও প্রেরণ করা যায়। এই কন্ট্রোলারগুলোকে অবশ্যই |
XML চাইল্ড এলিমেন্ট
<TaskPanel> এবং <DecorPanel> ট্যাগগুলোর মধ্যে বৈশিষ্ট্য ও ডিফল্ট আচরণ নির্ধারণ করার জন্য এই চাইল্ড এলিমেন্টগুলো অন্তর্ভুক্ত করা যেতে পারে।
| বৈশিষ্ট্য | বর্ণনা |
|---|---|
<Variant> | নেস্টেড ট্যাগ যেকোনো নির্দিষ্ট সময়ে প্যানেলটির একটি বিশেষ ভিজ্যুয়াল কনফিগারেশন বর্ণনা করে। একটি প্যানেলের একাধিক ভ্যারিয়েন্ট থাকতে পারে, যার প্রত্যেকটি একটি অনন্য আইডি দ্বারা চিহ্নিত হয়। প্রতিটি ভ্যারিয়েন্ট সেই নির্দিষ্ট কনফিগারেশনের জন্য বাউন্ডস, ভিজিবিলিটি, লেয়ার, আলফা, কর্নার রেডিয়াস এবং ইনসেটসের মতো প্রোপার্টিগুলো নির্ধারণ করে। ভ্যারিয়েন্টগুলো প্যারেন্ট ভ্যারিয়েন্ট থেকে প্রোপার্টি উত্তরাধিকার সূত্রেও পেতে পারে। |
<KeyFrameVariant> | <Variant> এর এক্সটেনশন একটি অবিচ্ছিন্ন ভগ্নাংশ মানের (০ থেকে ১) উপর ভিত্তি করে বিভিন্ন ভ্যারিয়েন্টের মধ্যে ভিজ্যুয়াল বৈশিষ্ট্যগুলির ইন্টারপোলেশন করতে দেয় এবং এটি মসৃণ ও গতিশীল ট্রানজিশনের জন্য ব্যবহৃত হয়, যেমন ড্র্যাগ অপারেশনের সময়, যখন প্যানেলের অবস্থা ড্র্যাগ অ্যামাউন্টের মতো একটি অবিচ্ছিন্ন ইনপুটের উপর নির্ভর করে। |
<Transitions> | নেস্টেড ট্যাগে প্রতিটি |
<TaskPanel> ট্যাগে টাস্ক-নির্দিষ্ট আচরণ নির্ধারণের জন্য এই বিশেষ চাইল্ড এলিমেন্টগুলোও অন্তর্ভুক্ত করা যেতে পারে।
| বৈশিষ্ট্য | বর্ণনা |
|---|---|
<Restart> | একটি টাস্কপ্যানেল খালি হয়ে গেলে যে রিস্টার্ট পলিসি প্রয়োগ করা হবে, তা বর্ণনা করার জন্য ব্যবহৃত নেস্টেড ট্যাগ। এই ট্যাগটি ' policy অ্যাট্রিবিউট সমর্থন করে, যা DEFAULT বা LAST এ সেট করা যেতে পারে, এবং maxRetry সমর্থন করে, যা টাইম আউট হওয়ার আগে কতবার রিস্টার্ট করার চেষ্টা করা হবে তা নির্দিষ্ট করে। |
<TaskBehavior> | এই প্যানেলে টাস্ক চালু হওয়ার আচরণ বর্ণনা করার জন্য ব্যবহৃত নেস্টেড ট্যাগ। এই ট্যাগটি newTaskLaunchPolicy অ্যাট্রিবিউট সমর্থন করে, যা এই টাস্কপ্যানেল থেকে নতুন টাস্ক চালু হওয়ার আচরণ কনফিগার করে। এই পলিসির জন্য বৈধ কনফিগারেশন মানগুলো হলো DEFAULT , REMAIN_IN_SOURCE , অথবা REPARENT_TO_SOURCE । |
নমুনা কোড
<TaskPanel id="@+id/panelId"
role="@array/roleValue"
defaultVariant="@id/closed"
displayId="0" >
<Variant id="@+id/base">
<Bounds left="0" top="0" width="100%" height="100%"/>
</Variant>
<Variant id="@+id/opened" parent="@id/base">
<Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed" parent="@id/base">
<Visibility isVisible="false"/>
</Variant>
<Transitions>
<Transition fromVariant="@id/closed"
toVariant="@id/opened"
onEvent="open_event"/>
<Event id="_System_TaskOpenEvent" panelId="@id/panelId" />
</Transition>
</Transitions>
</TaskPanel>