Android 7.0 多窗口支持

Android 7.0 多窗口支持

Android N 添加了對同時顯示多個應用窗口的支持。 在手持設備上,兩個應用可以在“分屏”模式中左右並排或上下並排顯示。 在電視設備上,應用可以使用“畫中畫”模式,在用戶與另一個應用交互的同時繼續播放視頻。

如果您使用 N Preview SDK 構建應用,則可以配置應用處理多窗口顯示的方法。 例如,您可以指定 Activity 的最小允許尺寸。 您還可以禁用應用的多窗口顯示,確保系統僅以全屏模式顯示應用。


概覽

Android N 允許多個應用同時共享屏幕。例如,用戶可以分屏顯示應用,在左邊查看網頁,同時在右邊寫郵件。 用戶體驗取決於設備:

  • 運行 Android N 的手持設備具有分屏模式。 在此模式中,系統以左右並排或上下並排的方式分屏顯示兩個應用。 用戶可以拖動兩個應用之間的分界線,放大其中一個應用,同時縮小另一個。
  • 在運行 Android N 的 Nexus Player 上,應用能以畫中畫模式顯示,即在用戶瀏覽網頁或與其他應用交互的同時繼續顯示內容。
  • 較大設備的製造商可選擇啓用自由形狀模式,在該模式中,用戶可以自由調整各 Activity 的尺寸。 若製造商啓用此功能,設備將同時具有自由形狀模式和分屏模式。


圖 1. 兩個應用在分屏模式中左右並排顯示。

用戶可以通過以下方式切換到多窗口模式:
- 若用戶打開 Overview 屏幕並長按 Activity 標題,則可以拖動該 Activity 至屏幕突出顯示的區域,使 Activity 進入多窗口模式。
- 若用戶長按 Overview 按鈕,設備上的當前 Activity 將進入多窗口模式,同時將打開 Overview 屏幕,用戶可在該屏幕中選擇要共享屏幕的另一個 Activity。

針對多窗口模式配置應用

如果您的應用面向 Android N,您可以對應用的 Activity 是否支持多窗口顯示以及顯示方式進行配置。 您可以在清單文件中設置屬性,以控制大小和佈局。 根 Activity 的屬性設置適用於其任務棧中的所有 Activity。 例如,如果根 Activity 已 android:resizeableActivity 設定爲 true,則任務棧中的所有 Activity 都將可以調整大小。

注:如果您使用低於 Android N 版本的 SDK 構建多向應用,則用戶在多窗口模式中使用應用時,系統將強制調整應用大小。 系統將顯示對話框,提醒用戶應用可能會發生異常。 系統不會調整定向應用的大小;如果用戶嘗試在多窗口模式下打開定向應用,應用將全屏顯示。

android:resizeableActivity

在清單的 或 節點中設置該屬性,啓用或禁用多窗口顯示:

android:resizeableActivity=[“true” | “false”]

如果該屬性設置爲 true,Activity 將能以分屏和自由形狀模式啓動。 如果此屬性設置爲 false,Activity 將不支持多窗口模式。 如果該值爲 false,且用戶嘗試在多窗口模式下啓動 Activity,該 Activity 將全屏顯示。

如果您的應用面向 Android N,但未對該屬性指定值,則該屬性的值默認設爲 true。

android:supportsPictureInPicture

在清單文件的 節點中設置該屬性,指明 Activity 是否支持畫中畫顯示。 如果 android:resizeableActivity 爲 false,將忽略該屬性。

android:supportsPictureInPicture=[“true” | “false”]

佈局屬性

對於 Android N, 清單元素支持以下幾種屬性,這些屬性影響 Activity 在多窗口模式中的行爲:

  • android:defaultWidth以自由形狀模式啓動時 Activity 的默認寬度。
  • android:defaultHeight以自由形狀模式啓動時 Activity 的默認高度。
  • android:gravity以自由形狀模式啓動時 Activity 的初始位置。請參閱 Gravity 參考資料,瞭解合適的值設置。
  • android:minimalHeight、android:minimalWidth分屏和自由形狀模式中 Activity 的最小高度和最小寬度。 如果用戶在分屏模式中移動分界線,使 Activity 尺寸低於指定的最小值,系統會將 Activity 裁剪爲用戶請求的尺寸。

例如,以下節點顯示瞭如何指定 Activity 在自由形狀模式中顯示時 Activity 的默認大小、位置和最小尺寸:

<activity android:name=".MyActivity">
<layout android:defaultHeight="500dp"
      android:defaultWidth="600dp"
      android:gravity="top|end"
      android:minimalHeight="450dp"
      android:minimalWidth="300dp" />
</activity>

在多窗口模式中啓動新 Activity

在啓動新 Activity 時,用戶可以提示系統如果可能,應將新 Activity 顯示在當前 Activity 旁邊。 要執行此操作,可使用標誌 Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT。 傳遞此標誌將請求以下行爲:

  • 如果設備處於分屏模式,系統會嘗試在啓動系統的 Activity 旁創建新 Activity,這樣兩個 Activity 將共享屏幕。 系統並不一定能實現此操作,但如果可以,系統將使兩個 Activity 處於相鄰的位置。
  • 如果設備不處於分屏模式,則該標誌無效。

如果設備處於自由形狀模式,則在啓動新 Activity 時,用戶可通過調用 ActivityOptions.setLaunchBounds() 指定新 Activity 的尺寸和屏幕位置。 如果設備不處於多窗口模式,則該方法無效。

Google 原文地址 https://developer.android.com/guide/topics/ui/multi-window.html#lifecycle

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章