設定轉移作業

使用轉場效果定義面板之間的變化。您可以定義轉場效果,說明如何以及何時在面板的兩個變體之間進行變更。您可以為每個面板定義轉場效果清單。

在單一 <TaskPanel><DecorPanel> 的設定中,使用 <Transitions> XML 標記做為一或多個 <Transition> 定義的容器。您可以使用這個標記定義一組動畫規則,控管面板何時及如何從一個不同的變體變更視覺狀態。

XML 屬性

<Transitions> 標記可為下列子項 <Transition> 元素定義預設值:

屬性 Status 說明
<defaultDuration> 選用

指定要套用至所有子項 的預設時間長度 (以毫秒為單位)

未明確設定時間長度屬性的 <Transition> 元素。

如未指定這項屬性,系統會使用 DEFAULT_DURATION 常數,通常為 300 毫秒。

defaultInterpolator 選用

參照 Android Interpolator XML 資源 ID。例如:@android:anim/accelerate_decelerate_interpolator。如果子項 <Transition> 元素未明確設定內插器屬性,系統會將內插器做為預設值。

如未指定預設插補器,系統通常會預設為 AccelerateDecelerateInterpolator

XML 子元素

<Transitions> 的子項是 <Transition>,這是用來定義 PanelState 變體之間特定動畫路徑的核心元素。單一 <Transitions> 區塊中可以巢狀包含多個 <Transition> 元素。

程式碼範例

在這個範例中,fromVariant 為選用項目。如未定義,系統會使用目前的變體。如果已定義 fromVariant,只有在所有參數都相符時,才會使用轉場效果。參數是在 Event 和 fromVariant 中指定。

<Transitions defaultDuration="400"
         defaultInterpolator="@android:anim/linear_interpolator">
  <Transition fromVariant="closed_app"
              toVariant="opened_app">
    <Event id="app_opened" panel="application_panel" />
  </Transition>
</Transitions>

轉場

轉場效果說明如何為面板兩個變體之間的視覺狀態變化製作動畫。轉場效果會列出從一個變體到另一個變體的路徑。為此,轉場效果會指定動畫和觸發動畫所需的事件等詳細資料。

對於面板,轉場效果可以定義屬性的動畫,例如邊界、顯示設定和 Alpha。如未指定自訂動畫師,系統會使用預設動畫師。

XML 屬性

<Transition> 標記會使用多種屬性定義動畫的特徵,以及動畫發生的條件。

XML 子元素

<Event> 定義可觸發轉換的事件屬性。

與這個事件相關聯的面板專屬 ID。
屬性 Status 說明
<id> 必要 用來啟動觸發條件的事件專屬 ID。
<panelId> 選用 與活動相關聯的面板專屬 ID。
componentName 選用 與這個事件相關聯的元件名稱。
packageName 選用 與事件相關聯的套件名稱。

程式碼範例

<Transitions defaultDuration="400"
        defaultInterpolator="@android:anim/accelerate_interpolator">
  <!-- A transition from 'closed_app' to 'opened_app' variant, triggered by 'open_app_event' -->
  <Transition fromVariant="closed_app"
              toVariant="opened_app">
    <Event id="app_opened" panel="application_panel" />
  <Transition>

  <!-- A transition from 'opened_app' to 'closed_app' variant, using a custom animator -->
  <Transition fromVariant="opened_app"
              toVariant="closed_app"
              animator="@animator/close_app">
    <Event id="_System_PanelEmptyEvent"
           panelId="application_panel" />
  <Transition>
</Transitions>