پیکربندی یک پنل

یک پنل، ویژگی‌های ناحیه‌ای را که اشغال می‌کند توصیف می‌کند و به عنوان یک کانتینر برنامه عمل می‌کند. شما از پیکربندی‌های XML برای تعریف پنل‌ها استفاده می‌کنید که رویکردی انعطاف‌پذیر و بدون کد برای سفارشی‌سازی رابط‌های کاربری ارائه می‌دهد. برای مدیریت نمونه‌ها و حالت‌ها، سیستم پنل‌های تعریف شده را ردیابی می‌کند.

فهرست پنل

رابط کاربری سیستم، تعاریف پنل‌های خود را از یک منبع آرایه‌ای به نام window_states بارگذاری می‌کند. این آرایه منبع به فایل‌های XML اشاره می‌کند که در آن‌ها پیکربندی‌های پنل‌های مجزا تعریف شده‌اند. این رویکرد متمرکز به این معنی است که پنل‌های مدیریت‌شده توسط رابط کاربری مقیاس‌پذیر، طبق برنامه بارگذاری شده و آماده استفاده توسط سیستم هستند.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <array name="window_states">
       <item>@xml/app_panel</item>
       <item>@xml/back_panel</item>
       ...
   </array>
</resources>

تعریف پنل

هر پنل در چارچوب رابط کاربری مقیاس‌پذیر با یک تگ XML به نام <TaskPanel> تعریف می‌شود که ویژگی‌های یک کانتینر برنامه را توصیف می‌کند. رابط کاربری سیستم این تعاریف پنل را بارگذاری می‌کند و پنل‌ها را تا زمان بارگذاری پیکربندی دیگر دنبال می‌کند.

برای مثال، با تغییر پیکربندی به دلیل چرخش یا درخواست صریح سیستم. <TaskPanel> به عنوان یک جزء اساسی برای ایجاد یک تجربه سفارشی از طریق اجزای رابط کاربری قابل تنظیم عمل می‌کند.

ویژگی‌های XML

تگ <TaskPanel> می‌تواند شامل این ویژگی‌ها باشد که می‌توانید برای تعریف حالت‌ها و انتقال‌ها از آنها استفاده کنید.

ویژگی وضعیت توضیحات
id اجباری یک شناسه منحصر به فرد برای پنل مشخص می‌کند. این ویژگی برای بازیابی پنل از PanelPool و مدیریت وضعیت آن در سیستم استفاده می‌شود.
role اجباری هدف یا عملکرد پنل را در سیستم تعریف می‌کند. این مقدار می‌تواند به یک منبع رشته‌ای، یک آرایه رشته‌ای از نام اجزا یا یک شناسه طرح‌بندی اشاره کند. برای مثال، می‌تواند فعالیت‌های پایداری را که باید همیشه روی پنل نمایش داده شوند یا یک طرح‌بندی که باید فشرده شود، تعریف کند.
defaultVariant اختیاری شناسه‌ی گونه‌ای را که پنل باید هنگام بارگذاری اولیه اتخاذ کند، مشخص می‌کند. در صورت عدم تعیین شناسه، سیستم می‌تواند از اولین گونه‌ی تعریف‌شده به عنوان پیش‌فرض استفاده کند.
displayId اختیاری شناسه‌ی نمایشگری را که پنل قرار است در آن نمایش داده شود، مشخص می‌کند.
defaultLayer اختیاری می‌تواند یک ترتیب Z پیش‌فرض برای انواع پنل مشخص کند اگر انواع به صراحت یک لایه را تعریف نکنند.
controller اختیاری،
مشمول تغییر

به منبعی (معمولاً یک شناسه XML) اشاره می‌کند که یک کنترل‌کننده مخصوص پنل را تعریف می‌کند، که امکان ذخیره و ارسال مقادیر پیکربندی به کنترل‌کننده‌های پنل سفارشی را فراهم می‌کند.

این کنترلرها باید رابط com.android.car.scalableui.panel.TaskPanelController را پیاده‌سازی کنند. یکی از کاربردهای رایج این کنترلرها، تعریف تخصیص وظایف انعطاف‌پذیر در زمان اجرا روی پنل است.

عناصر فرزند XML

تگ <TaskPanel> می‌تواند شامل این ویژگی‌ها باشد تا ویژگی‌ها و رفتارهای پیش‌فرض را تعریف کند،

ویژگی توضیحات
<Variant>

تگ‌های تو در تو، پیکربندی بصری خاصی را برای پنل در هر زمان مشخص توصیف می‌کنند. یک پنل می‌تواند چندین نوع داشته باشد که هر کدام با یک شناسه منحصر به فرد مشخص می‌شوند.

هر نوع، ویژگی‌هایی مانند مرزها، قابلیت مشاهده، لایه، آلفا، شعاع گوشه و درج‌ها را برای آن پیکربندی خاص تعریف می‌کند. انواع همچنین می‌توانند ویژگی‌هایی را از یک نوع والد به ارث ببرند.

<KeyFrameVariant> افزونه‌ی <Variant> امکان درون‌یابی ویژگی‌های بصری بین انواع مختلف را بر اساس یک مقدار کسری پیوسته (0 تا 1) فراهم می‌کند و برای انتقال‌های روان و پویا، مانند هنگام عملیات کشیدن (drag)، زمانی که وضعیت پنل به یک ورودی پیوسته مانند مقدار کشیدن بستگی دارد، استفاده می‌شود.
<Transitions>

تگ تو در تو شامل مجموعه‌ای از تعاریف <Transition> است که نحوه‌ی انیمیشن رابط کاربری بین حالت‌های مختلف را توصیف می‌کند.

هر <Transition> انواع from و to ، رویدادی که آن را فعال می‌کند را تعریف می‌کند و می‌تواند به صورت اختیاری یک Animator سفارشی برای استفاده در انیمیشن، و همچنین یک مدت زمان و میان‌یاب را مشخص کند.

کد نمونه

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