Panel yapılandırma

Panel, kapladığı alanın özelliklerini tanımlar ve uygulama kapsayıcısı olarak işlev görür. Panelleri tanımlamak için XML yapılandırmalarını kullanırsınız. Paneller, kullanıcı arayüzlerini özelleştirmek için esnek ve kodsuz bir yaklaşım sunar. Sistem, örnekleri ve durumları yönetmek için tanımlı panelleri izler.

Panel listesi

Sistem kullanıcı arayüzü, panellerinin tanımlarını window_states adlı bir dizi kaynağında yükler. Bu kaynak dizisi, her bir panel yapılandırmasının tanımlandığı XML dosyalarını gösterir. Bu merkezi yaklaşım, Scalable UI tarafından yönetilen panellerin amaçlandığı şekilde yüklendiği ve sistem tarafından kullanıma hazır olduğu anlamına gelir.

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

Panel tanımı

Ölçeklenebilir kullanıcı arayüzü çerçevesindeki her panel, bir uygulama kapsayıcısının özelliklerini açıklayan <TaskPanel> adlı bir XML etiketiyle tanımlanır. Sistem kullanıcı arayüzü, bu panel tanımlarını yükler ve başka bir yapılandırma yüklenene kadar panelleri izler.

Örneğin, döndürme veya açık sistem isteği nedeniyle yapılandırma değişikliği yapıldığında. <TaskPanel>, yapılandırılabilir kullanıcı arayüzü bileşenleri aracılığıyla özelleştirilmiş bir deneyim oluşturmak için temel bileşen olarak kullanılır.

XML özellikleri

<TaskPanel> etiketi, durumları ve geçişleri tanımlamak için kullanabileceğiniz bu özellikleri içerebilir.

Özellik Durum Açıklama
id Zorunlu Panel için benzersiz bir tanımlayıcı belirtir. Bu özellik, PanelPool kaynağından paneli almak ve sistemdeki durumunu yönetmek için kullanılır.
role Zorunlu Panelin sistemdeki amacını veya işlevini tanımlar. Değer, bir dize kaynağına, bileşen adlarının dize dizisine veya bir düzen kimliğine atıfta bulunabilir. Örneğin, her zaman panelde gösterilmesi gereken kalıcı etkinlikleri veya şişirilecek bir düzeni tanımlayabilir.
defaultVariant İsteğe bağlı Panelin yüklendiğinde başlangıçta kullanması gereken varyantın kimliğini belirtir. Belirtilmezse sistem, varsayılan olarak tanımlanan ilk varyantı kullanabilir.
displayId İsteğe bağlı Panelin görünmesi amaçlanan ekranın kimliğini belirtir.
defaultLayer İsteğe bağlı Varyantlar katmanı açıkça tanımlamıyorsa panelin varyantları için varsayılan bir Z sırası belirleyebilir.
controller İsteğe bağlı,
değişikliğe tabidir.

Yapılandırma değerlerinin özel panel denetleyicilerinde depolanmasına ve aktarılmasına olanak tanıyan, panele özel bir denetleyiciyi tanımlayan bir kaynağa (genellikle bir XML kimliği) referans verir.

Bu denetleyiciler com.android.car.scalableui.panel.TaskPanelController arayüzünü uygulamalıdır. Bu denetleyicilerin yaygın bir kullanım alanı, panelde esnek çalışma zamanı görevi dağıtımları tanımlamaktır.

XML alt öğeleri

<TaskPanel> etiketi, özellikleri ve varsayılan davranışları tanımlamak için bu özellikleri içerebilir.

Özellik Açıklama
<Variant>

İç içe yerleştirilmiş etiket, panelin belirli bir zamandaki görsel yapılandırmasını açıklar. Bir panelin birden fazla varyantı olabilir ve her varyant benzersiz bir kimlikle tanımlanır.

Her varyant, söz konusu yapılandırma için sınırlar, görünürlük, katman, alfa, köşe yarıçapı ve iç kısımlar gibi özellikleri tanımlar. Varyantlar, üst varyantlardan da özellik devralabilir.

<KeyFrameVariant> <Variant> uzantısı, görsel özelliklerin sürekli bir kesir değerine (0-1) dayalı olarak farklı varyantlar arasında enterpolasyonunu sağlar ve sürükleme işlemi sırasında olduğu gibi, panelin durumunun sürükleme miktarı gibi sürekli bir girişe bağlı olduğu durumlarda yumuşak ve dinamik geçişler için kullanılır.
<Transitions>

İç içe yerleştirilmiş etiket, kullanıcı arayüzünün farklı varyantlar arasında nasıl animasyon yapacağını açıklayan bir <Transition> tanımlar koleksiyonu içerir.

Her <Transition>, from ve to varyantlarını, bunu tetikleyen etkinliği tanımlar ve isteğe bağlı olarak animasyon için kullanılacak özel bir Animator'ın yanı sıra bir süre ve interpolatör belirtebilir.

Örnek kod

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