একটি প্যানেল কনফিগার করুন

একটি প্যানেল যে জায়গা দখল করে তার বৈশিষ্ট্য বর্ণনা করে এবং একটি অ্যাপ কন্টেইনার হিসেবে কাজ করে। প্যানেল সংজ্ঞায়িত করার জন্য আপনি 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> নামে একটি XML ট্যাগ দিয়ে সংজ্ঞায়িত করা হয়, যা একটি অ্যাপ কন্টেইনারের বৈশিষ্ট্য বর্ণনা করে। সিস্টেম UI এই প্যানেল সংজ্ঞাগুলি লোড করে এবং অন্য কনফিগারেশন লোড না হওয়া পর্যন্ত প্যানেলগুলি ট্র্যাক করে।

উদাহরণস্বরূপ, ঘূর্ণন বা স্পষ্ট সিস্টেম অনুরোধের কারণে কনফিগারেশন পরিবর্তনের মাধ্যমে। <TaskPanel> কনফিগারযোগ্য UI উপাদানগুলির মাধ্যমে একটি কাস্টমাইজড অভিজ্ঞতা তৈরির জন্য একটি মৌলিক উপাদান হিসেবে কাজ করে।

XML বৈশিষ্ট্যাবলী

<TaskPanel> ট্যাগে এই বৈশিষ্ট্যগুলি থাকতে পারে যা আপনি অবস্থা এবং রূপান্তর নির্ধারণ করতে ব্যবহার করতে পারেন।

বৈশিষ্ট্য অবস্থা বিবরণ
id বাধ্যতামূলক প্যানেলের জন্য একটি অনন্য শনাক্তকারী নির্দিষ্ট করে। এই বৈশিষ্ট্যটি PanelPool থেকে প্যানেলটি পুনরুদ্ধার করতে এবং সিস্টেমের মধ্যে এর অবস্থা পরিচালনা করতে ব্যবহৃত হয়।
role বাধ্যতামূলক সিস্টেমে প্যানেলের উদ্দেশ্য বা কার্যকারিতা নির্ধারণ করে। মানটি একটি স্ট্রিং রিসোর্স, উপাদানের নামের একটি স্ট্রিং অ্যারে, অথবা একটি লেআউট আইডি উল্লেখ করতে পারে। উদাহরণস্বরূপ, এটি প্যানেলে সর্বদা প্রদর্শিত হওয়া স্থায়ী কার্যকলাপ, অথবা একটি লেআউটকে সংজ্ঞায়িত করতে পারে যা স্ফীত করা উচিত।
defaultVariant ঐচ্ছিক প্যানেলটি লোড করার সময় প্রথমে কোন ভেরিয়েন্টটি গ্রহণ করবে তার আইডি নির্দিষ্ট করে। যদি নির্দিষ্ট না করা থাকে, তাহলে সিস্টেমটি প্রথম সংজ্ঞায়িত ভেরিয়েন্টটিকে ডিফল্ট হিসেবে ব্যবহার করতে পারে।
displayId ঐচ্ছিক প্যানেলটি যে ডিসপ্লেতে প্রদর্শিত হবে তার আইডি নির্দিষ্ট করে।
defaultLayer ঐচ্ছিক যদি ভেরিয়েন্টগুলি স্পষ্টভাবে কোনও স্তর সংজ্ঞায়িত না করে তবে প্যানেলের ভেরিয়েন্টগুলির জন্য একটি ডিফল্ট Z-ক্রম নির্দিষ্ট করতে পারে।
controller ঐচ্ছিক,
পরিবর্তন সাপেক্ষে

একটি রিসোর্স (সাধারণত একটি XML ID) উল্লেখ করে যা একটি প্যানেল-নির্দিষ্ট কন্ট্রোলারকে সংজ্ঞায়িত করে, যা কাস্টম প্যানেল কন্ট্রোলারগুলিতে কনফিগারেশন মান সংরক্ষণ এবং প্রেরণের অনুমতি দেয়।

এই কন্ট্রোলারগুলির com.android.car.scalableui.panel.TaskPanelController ইন্টারফেসটি বাস্তবায়ন করা উচিত। এই কন্ট্রোলারগুলির একটি সাধারণ ব্যবহারের ক্ষেত্রে হল প্যানেলে নমনীয় রানটাইম টাস্ক বরাদ্দ নির্ধারণ করা।

XML চাইল্ড এলিমেন্ট

<TaskPanel> ট্যাগে বৈশিষ্ট্য এবং ডিফল্ট আচরণ নির্ধারণের জন্য এই বৈশিষ্ট্যগুলি অন্তর্ভুক্ত থাকতে পারে,

বৈশিষ্ট্য বিবরণ
<Variant>

নেস্টেড ট্যাগ যেকোনো সময়ে প্যানেলের জন্য একটি নির্দিষ্ট ভিজ্যুয়াল কনফিগারেশন বর্ণনা করে। একটি প্যানেলের একাধিক রূপ থাকতে পারে, প্রতিটি রূপ একটি অনন্য আইডি দ্বারা চিহ্নিত করা হয়।

প্রতিটি ভেরিয়েন্ট সেই নির্দিষ্ট কনফিগারেশনের জন্য সীমানা, দৃশ্যমানতা, স্তর, আলফা, কোণার ব্যাসার্ধ এবং ইনসেটের মতো বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করে। ভেরিয়েন্টগুলি একটি প্যারেন্ট ভেরিয়েন্ট থেকেও বৈশিষ্ট্য উত্তরাধিকারসূত্রে পেতে পারে।

<KeyFrameVariant> <Variant> এর এক্সটেনশন একটি অবিচ্ছিন্ন ভগ্নাংশ মানের (0 থেকে 1) উপর ভিত্তি করে বিভিন্ন ভেরিয়েন্টের মধ্যে ভিজ্যুয়াল বৈশিষ্ট্যের ইন্টারপোলেশনের অনুমতি দেয় এবং মসৃণ এবং গতিশীল রূপান্তরের জন্য ব্যবহৃত হয়, যেমন একটি ড্র্যাগ অপারেশনের সময়, যখন প্যানেলের অবস্থা একটি অবিচ্ছিন্ন ইনপুট যেমন একটি ড্র্যাগ পরিমাণের উপর নির্ভর করে।
<Transitions>

নেস্টেড ট্যাগে <Transition> সংজ্ঞার একটি সংগ্রহ রয়েছে, যা বর্ণনা করে যে UI কীভাবে বিভিন্ন ভেরিয়েন্টের মধ্যে অ্যানিমেট করা উচিত।

প্রতিটি <Transition> থেকে এবং থেকে ভেরিয়েন্ট, এটিকে ট্রিগার করে এমন ইভেন্ট সংজ্ঞায়িত করে এবং ঐচ্ছিকভাবে অ্যানিমেশনের জন্য ব্যবহার করার জন্য একটি কাস্টম অ্যানিমেটর, সেইসাথে একটি সময়কাল এবং ইন্টারপোলেটর নির্দিষ্ট করতে পারে।

নমুনা কোড

<Panel 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>
</Panel>