多視窗模式可讓多個應用程式同時分享同一個畫面。 應用程式可以並排或上下並排 (分割畫面模式), 一個小視窗疊加顯示在其他應用程式上 (子母畫面模式),或 應用程式。
使用者體驗會因 Android 版本和裝置類型而異:
Android 7.0 (API 級別 24) 在小螢幕上推出分割畫面模式 和子母畫面模式。
分割畫面模式會透過兩個應用程式填滿整個螢幕,顯示兩個應用程式 可以並排或上下移動使用者可以拖曳分隔線 區隔兩個應用程式,將一個應用程式放大,另一個縮小。
子母畫面模式可讓使用者繼續播放影片 與其他應用程式互動 (請參閱子母畫面支援)。
任意形式模式,使用者可視需要調整每個活動的大小,且 支援大螢幕裝置的製造商啟用
如要設定應用程式處理多視窗模式的方式,請指定 活動最小的尺寸您也能將其停用 應用程式的多視窗模式
resizeabableActivity="false"
,確保系統一律會顯示通知 應用程式以全螢幕顯示
Android 8.0 (API 級別 26) 將子母畫面模式擴充為小型 螢幕裝置。
Android 12 (API 級別 31) 將多視窗模式標準行為設為標準行為。
分割畫面模式
使用者可以按照下列步驟啟用分割畫面模式:
- 開啟「最近使用」畫面
- 將應用程式滑動到檢視區塊
- 按下應用程式標題列中的應用程式圖示
- 選取「分割畫面」選單選項
- 從「Recents」畫面選取另一個應用程式,或關閉「Recents」畫面並 執行其他應用程式。
使用者可以將視窗分隔線拖曳至 向上或向下、向左或向右移動
鄰近啟動
如果應用程式需要透過意圖存取內容,您可以使用
按下 FLAG_ACTIVITY_LAUNCH_ADJACENT
圖示,在相鄰位置開啟內容
分割畫面視窗。
FLAG_ACTIVITY_LAUNCH_ADJACENT
是在 Android 7.0 (API 級別 24) 中導入,
允許在分割畫面模式下執行的應用程式,以啟動相鄰模式的活動
視窗。
Android 12L (API 級別 32) 以上版本已將標記的定義擴充為 讓執行全螢幕的應用程式啟動分割畫面模式,然後啟動 活動。
如要啟動鄰近活動,請在以下位置使用 FLAG_ACTIVITY_LAUNCH_ADJACENT
:
搭配 FLAG_ACTIVITY_NEW_TASK
,例如:
Kotlin
fun openUrlInAdjacentWindow(url: String) { Intent(Intent.ACTION_VIEW).apply { data = Uri.parse(url) addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT or Intent.FLAG_ACTIVITY_NEW_TASK) }.also { intent -> startActivity(intent) } }
Java
public void openUrlInAdjacentWindow(String url) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }
多視窗模式下的活動生命週期
多視窗模式不會改變活動生命週期。不過, 多個視窗中應用程式的重新啟用狀態會因版本而異 Android。
多視窗運作
Android 10 (API 級別 29) 以上版本支援多視窗運作,全部
當裝置處於多視窗模式時,活動會維持在 RESUMED
狀態
模式。如果活動位在
活動或活動無法聚焦,例如活動位於
子母畫面模式。此外,也有可能沒有活動在
通知。onStop()
方法可照常運作:每次活動關閉時都會呼叫這個方法
。
搭載 Android 9 (API 級別) 的特定裝置也支援多視窗運作 28)。如要在 Android 9 裝置上啟用多視窗運作功能,請新增以下資訊清單 中繼資料:
<meta-data android:name="android.allow_multiple_resumed_activities" android:value="true" />
如要確認特定裝置是否支援該資訊清單中繼資料,請參閱裝置規格。
Android 9
在 Android 9 (API 級別 28) 以下版本的多視窗模式下,只有活動
使用者最近互動的時間在特定時間處於活躍狀態。這個
系統會將活動視為最上方,且是 RESUMED
中唯一的活動
state.所有其他可見活動都是 STARTED
,但不是 RESUMED
。
不過,系統會降低這些可見但未重新啟用的活動
優先於畫面上未顯示的活動如果使用者與其中一個應用程式互動
可見活動,而該活動會繼續恢復
活動進入 STARTED
狀態。
如果單一使用中的應用程式程序中有多個活動, 系統會恢復 Z 順序最高的活動,然後暫停其他活動。
設定變更
當使用者讓應用程式進入多視窗模式時,系統會通知 設定變更的活動,如「處理設定」一節所述 變更。當使用者調整應用程式或放回應用程式大小時,也會發生這種情況 進入全螢幕模式。
基本上,這項變更的影響與活動生命週期相同 系統會通知應用程式,裝置已從直向切換成直向模式 橫向,但應用程式尺寸已變更,而非 就是因為有人替換了您的活動可以處理設定變更本身,或 您的應用程式可讓系統刪除活動,並使用 新維度。
如果使用者調整視窗大小並放大任一尺寸,
系統會調整活動大小,以符合使用者動作和問題設定
視需要進行調整如果應用程式在繪圖方面落後於新曝露的區域,
系統會根據
windowBackground
屬性或預設設定
windowBackgroundFallback
樣式屬性。
專屬資源存取權
為了協助支援多視窗運作功能,請使用
onTopResumedActivityChanged()
生命週期回呼。
活動獲得或遺失主要重新啟用活動時,系統會叫用回呼 位置,這在活動使用共用單例模式資源時十分重要 例如麥克風或相機:
Kotlin
override fun onTopResumedActivityChanged(topResumed: Boolean) { if (topResumed) { // Top resumed activity. // Can be a signal to re-acquire exclusive resources. } else { // No longer the top resumed activity. } }
Java
@Override public void onTopResumedActivityChanged(boolean topResumed) { if (topResumed) { // Top resumed activity. // Can be a signal to re-acquire exclusive resources. } else { // No longer the top resumed activity. } }
請注意,應用程式可能會因為其他原因而遺失資源,例如移除 共用硬體
在任何情況下,應用程式都應該妥善處理會影響可用資源的事件和狀態變更。
對於會使用相機的應用程式,
CameraManager.AvailabilityCallback#onCameraAccessPrioritiesChanged()
提示該嘗試存取相機的好時機。
從 Android 10 (API 級別 29) 開始會提供此方法。
請注意,resizeableActivity=false
無法保證獨家相機
,因為其他螢幕可以開啟使用攝影機的其他應用程式。
![](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/multi-window-mode/camera.png?authuser=9&hl=zh-tw)
應用程式無須在失去焦點時釋出相機。 舉例來說,您可能會想在使用者互動時繼續相機預覽畫面 顯示最主要的重新啟用應用程式您的應用程式可以 執行相機時,並不是最頂端的重新啟用應用程式,但必須處理 中斷充電盒的連線最上層重新啟用的應用程式要使用 相機可開啟該相機,且您的應用程式將失去存取權。您的應用程式可以重新開啟 相機就會聚焦於應用程式再次聚焦時的鏡頭。
應用程式收到 CameraDevice.StateCallback#onDisconnected()
後
回呼,則對著鏡頭裝置進行後續呼叫將會擲回
CameraAccessException
.
多螢幕
Android 10 (API 級別 29) 支援在第二螢幕上執行活動。如果 在具有多個螢幕的裝置中執行活動,使用者可以移動 螢幕的活動情形適用於多視窗運作 多螢幕情境多個活動可在啟用時收到使用者輸入內容
當應用程式啟動或建立另一個活動時,可以指定要在哪個螢幕上執行。此行為取決於活動啟動模式
所定義,以及由
啟動活動的實體。詳情請參閱 ActivityOptions
類別
詳細資料。
當活動移至第二螢幕時,可能會執行情境更新、調整視窗大小,以及設定和資源變更。如果活動
處理設定變更時,系統會在
onConfigurationChanged()
;否則會重新啟動活動。
活動應在 onCreate()
中檢查目前的螢幕,並
onConfigurationChanged()
表示處理設定變更。請務必在螢幕變更時更新資源和版面配置。
如果活動所選取的啟動模式允許多個執行個體, 就能建立新的活動例項。兩項活動 才會同時恢復運作
![](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/multi-window-mode/multi-display.png?authuser=9&hl=zh-tw)
建議您也參閱當中介紹的多螢幕 API 。
活動與應用程式內容
使用適當的背景對多重顯示至關重要。存取資源時 活動內容 (目前顯示) 與應用程式不同 背景資訊。
活動內容包含螢幕的相關資訊,而且 調整活動顯示的顯示區域。這讓您能 取得有關螢幕密度或視窗指標的正確資訊 應用程式。請一律使用活動內容 (或其他以 UI 為基礎的方式) ) 來取得目前視窗或顯示畫面的資訊。這也 會影響部分使用上下文資訊的系統 API (例如 浮動式訊息總覽)。
活動視窗設定和父項螢幕定義了資源和背景。按以下方式取得目前的螢幕:
Kotlin
val activityDisplay = activity.getDisplay()
Java
Display activityDisplay = activity.getDisplay();
取得目前的活動視窗指標:
Kotlin
val windowMetrics = activity.getWindowManager().getCurrentWindowMetrics()
Java
WindowMetrics windowMetrics = activity.getWindowManager().getCurrentWindowMetrics();
取得目前系統設定的視窗指標上限:
Kotlin
val maximumWindowMetrics = activity.getWindowManager().getMaximumWindowMetrics()
Java
WindowMetrics maximumWindowMetrics = activity.getWindowManager().getMaximumWindowMetrics();
視窗範圍上限可用於計算、選擇版面配置或提前判斷要擷取的資源大小。已具備這類權限
onCreate()
可讓您在第一個版面配置之前做出這些決定
略過這些指標不應用於特定檢視畫面元素的版面配置;
而是使用 Configuration
物件的資訊。
螢幕凹口
摺疊式裝置在摺疊和展開時可能會有不同的凹口形狀。 如要避免發生凹口問題,請參閱「支援螢幕凹口」。
第二螢幕
您可以透過 DisplayManager
系統服務取得可用的螢幕:
Kotlin
val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager val displays = displayManager.getDisplays()
Java
DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); Display[] displays = displayManager.getDisplays();
使用 Display
類別取得特定螢幕的相關資訊,例如
做為顯示大小或旗標,用於表示螢幕是否安全。
但是,不要假設顯示大小會與
分配給應用程式的顯示區域請記住,在多視窗模式下
應用程式會佔用一部分的螢幕空間
判定活動是否能在螢幕上啟動:
Kotlin
val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager val activityAllowed = activityManager.isActivityStartAllowedOnDisplay(context, displayId, intent)
Java
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); boolean activityAllowed = activityManager.isActivityStartAllowedOnDisplay(context, displayId, intent);
然後在螢幕上啟動活動:
Kotlin
val options = ActivityOptions.makeBasic() options.setLaunchDisplayId(targetDisplay.displayId) startActivity(intent, options.toBundle())
Java
ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchDisplayId(targetDisplay.displayId); startActivity(intent, options.toBundle());
多螢幕支援
Android 為軟體鍵盤、桌布和啟動器提供多螢幕支援。
軟體鍵盤
如果顯示器設定為 支援系統裝飾如果出現 文字欄位要求在螢幕上的輸入內容
![](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/multi-window-mode/keyboard.png?authuser=9&hl=zh-tw)
桌布
在 Android 10 (API 級別 29) 中,第二螢幕可擁有桌布。
每個架構都會建立 WallpaperService.Engine
的
螢幕。請務必分別繪製每個引擎的表面。開發人員
就能在 Compute Engine 中
WallpaperService.Engine#getDisplayContext()
.此外,請確認您的
WallpaperInfo.xml
檔案設定了 android:supportsMultipleDisplays="true"
。
![](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/multi-window-mode/wallpaper.png?authuser=9&hl=zh-tw)
啟動器
新的意圖篩選器類別「SECONDARY_HOME
」為第二螢幕提供專屬活動。活動執行個體會在支援系統裝飾的所有螢幕上使用,每個螢幕上擁有一個執行個體。
<activity>
...
<intent-filter>
<category android:name="android.intent.category.SECONDARY_HOME" />
...
</intent-filter>
</activity>
活動的啟動模式不得阻止多個執行個體,且能夠適應不同的螢幕大小。啟動模式不能是 singleInstance
或 singleTask
。
舉例來說,Launcher3
的 Android 開放原始碼計畫實作支援
SECONDARY_HOME
活動。
![](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/multi-window-mode/launcher-phone.png?authuser=9&hl=zh-tw)
![](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/multi-window-mode/launcher-display.png?authuser=9&hl=zh-tw)
視窗指標
Android 11 (API 級別 30) 推出了下列 WindowManager
方法
提供在多視窗模式下執行的應用程式邊界:
getCurrentWindowMetrics()
:傳回WindowMetrics
物件 系統目前的視窗狀態getMaximumWindowMetrics()
:會傳回最大的WindowMetrics
系統可能處於視窗化狀態
Jetpack WindowManager 程式庫方法 computeCurrentWindowMetrics()
和 computeMaximumWindowMetrics()
都提供類似的功能
但可與 API 級別 14 回溯相容。
如要取得目前螢幕以外的螢幕指標,請執行下列步驟 (如程式碼片段所示):
- 建立螢幕內容
- 為螢幕建立視窗內容
- 取得視窗內容的
WindowManager
- 取得應用程式可用最大顯示區域的
WindowMetrics
Kotlin
val windowMetrics = context.createDisplayContext(display) .createWindowContext(WindowManager.LayoutParams.TYPE_APPLICATION, null) .getSystemService(WindowManager::class.java) .maximumWindowMetrics
Java
WindowMetrics windowMetrics = context.createDisplayContext(display) .createWindowContext(WindowManager.LayoutParams.TYPE_APPLICATION, null) .getSystemService(WindowManager.class) .getMaximumWindowMetrics();
已淘汰的方法
Display
方法 getSize()
和 getMetrics()
已於
API 級別 30,改用新的 WindowManager
方法。
Android 12 (API 級別 31) 淘汰了 Display
方法 getRealSize()
和
getRealMetrics()
,並更新其行為,以更貼近使用者的
getMaximumWindowMetrics()
的行為。
多視窗模式設定
如果您的應用程式指定 Android 7.0 (API 級別 24) 以上版本,您可以設定
以及應用程式活動是否支援多視窗模式。您可以設定
屬性,控制尺寸和版面配置。根活動的
屬性設定會套用至其工作堆疊中的所有活動。例如:
如果根活動具有 android:resizeableActivity="true"
,則所有
工作堆疊中的活動可調整大小。在某些大型裝置上,例如
Chromebook 時,即使您指定
android:resizeableActivity="false"
。如果應用程式無法運作
Google Play 篩選器,藉此限制您的應用程式在這類裝置上的上架情形。
Android 12 (API 級別 31) 預設為多視窗模式。大螢幕裝置
(中等或展開視窗大小類別),所有應用程式都會在多視窗模式下執行
模式都不會改變。在小螢幕上,系統會檢查
活動的 minWidth
、minHeight
和 resizeableActivity
設定,判斷活動是否可在多視窗模式下執行。
resizeableActivity
在資訊清單的 <activity>
或 <application>
中設定這個屬性
元素,針對 API 級別 30 以下版本啟用或停用多視窗模式:
<application
android:name=".MyActivity"
android:resizeableActivity=["true" | "false"] />;
如果將這項屬性設為 true
,就可以在分割畫面中啟動活動
以及任意形式模式如果屬性設為 false
,活動就不會
多視窗模式。如果值為 false,而使用者嘗試
在多視窗模式下啟動活動,活動便會
。
如果您的應用程式指定 API 級別 24 以上版本,但並未指定 API 級別 ,屬性的值就會是 true。
如果應用程式指定的 API 級別為 31 以上,則此屬性在 小螢幕和大螢幕:
- 大螢幕 (中型或展開視窗大小類別):所有應用程式
多視窗模式。此屬性可指出活動是否
調整大小如果
resizeableActivity="false"
,應用程式就會執行 相容模式,以符合螢幕尺寸。 - 小螢幕 (「精簡」視窗大小類別):如果
resizeableActivity="true"
,以及活動的最小寬度和最小高度 都符合多視窗模式的需求,而活動支援多視窗模式 模式。如果為resizeableActivity="false"
,表示活動不支援 多視窗模式,忽略活動的最小寬度和高度。
supportsPictureInPicture
在資訊清單的 <activity>
節點中設定這個屬性,以表示是否
活動支援子母畫面模式。
<activity
android:name=".MyActivity"
android:supportsPictureInPicture=["true" | "false"] />
configChanges
自行處理多視窗設定變更,例如在使用者
調整視窗大小,在應用程式中新增 android:configChanges
屬性
至少包含下列值的資訊清單 <activity>
節點:
<activity
android:name=".MyActivity"
android:configChanges="screenSize | smallestScreenSize
| screenLayout | orientation" />
新增 android:configChanges
後,您的活動和片段會收到
而不是刪除並呼叫 onConfigurationChanged()
重新建立您可以手動更新檢視畫面、重新載入資源,並
視需要執行其他作業
<layout>
在 Android 7.0 (API 級別 24) 以上版本中,<layout>
資訊清單元素
支援多種屬性,這些屬性會影響活動在多視窗模式下的行為
模式:
android:defaultHeight
,android:defaultWidth
:預設高度和寬度 以任意形式模式啟動時的活動android:gravity
:在 任意形式模式如要瞭解適當的值,請參閱Gravity
類別。android:minHeight
、android:minWidth
:最小高度和最小寬度 在分割畫面和任意形式這兩個模式下進行活動如果使用者移動 分割畫面模式下的分隔線,讓活動小於 系統會將活動裁剪為根據大小 要求。
以下程式碼顯示如何指定活動的預設大小和位置 以及活動以任意形式模式顯示時的最小尺寸:
<activity android:name=".MyActivity">
<layout android:defaultHeight="500dp"
android:defaultWidth="600dp"
android:gravity="top|end|..."
android:minHeight="450dp"
android:minWidth="300dp" />
</activity>
執行階段的多視窗模式
從 Android 7.0 開始,這個系統提供的功能可支援 可以在多視窗模式下執行
停用多視窗模式下的功能
在多視窗模式下,Android 可能會停用或忽略不適用的功能 加入與其他活動或應用程式共用裝置畫面的活動。
此外,還會停用部分系統 UI 自訂選項。例如: 在多視窗模式中執行的應用程式無法隱藏狀態列 (請參閱 控制系統 UI 的顯示設定)。
系統會忽略 android:screenOrientation
屬性的變更。
多視窗模式查詢與回呼
Activity
類別提供下列方法支援多視窗模式
模式:
isInMultiWindowMode()
:指出活動是否處於 多視窗模式。isInPictureInPictureMode()
:指出活動是否處於 子母畫面模式。onMultiWindowModeChanged()
:系統會在每當有 活動進入或退出多視窗模式。系統會傳遞方法 如果活動進入多視窗模式,傳回 true 或 false 的值; 就會退出多視窗模式onPictureInPictureModeChanged()
:系統會在每當 就會進入或退出子母畫面模式。系統會 如果活動進入子母畫面,則值為 true 方法 模式;如果活動離開子母畫面模式,則為 false。
Fragment
類別公開了前述許多方法的版本;例如
Fragment.onMultiWindowModeChanged()
.
子母畫面模式
如要在子母畫面模式下啟用活動,請撥打
enterPictureInPictureMode()
如果裝置不支援,這個方法不會產生任何作用
不支援子母畫面模式。詳情請參閱使用
子母畫面 (PiP)。
多視窗模式中的新活動
啟動新活動時,您可以表明該新活動應
可以的話,顯示在目前容器旁邊。使用意圖旗標
FLAG_ACTIVITY_LAUNCH_ADJACENT
:指示系統嘗試建立
新活動會顯示在相鄰的視窗中,因此這兩個活動會共用這個畫面。
系統會盡力幫你完成這項工作,但不保證一定會發生。
如果裝置處於任意形式模式,而您要啟動新活動,您可以
指定新活動的尺寸和螢幕位置,方法是呼叫
ActivityOptions.setLaunchBounds()
.如果裝置不支援,此方法不會產生任何效果
未處於多視窗模式
在 API 級別 30 及以下級別中,當您在工作堆疊中啟動活動時, 活動會取代螢幕上的活動,並沿用所有多視窗模式 資源。如果您想在 多視窗模式,您必須在新的工作堆疊中啟動該模式。
Android 12 (API 級別 31) 允許應用程式在多個活動之間拆分應用程式的工作視窗。由您決定應用程式的顯示方式 建立 XML 來回應活動 (全螢幕、並排或堆疊) 設定檔或發出 Jetpack WindowManager API 呼叫
拖曳
使用者可以將一項活動的資料拖曳到另一項活動
活動正在分享這個螢幕畫面。(在 Android 7.0 之前,使用者只能將
在單一活動內捨棄資料)。如何快速新增接受要求
遭捨棄的內容會看到 DropHelper
API。使用完整的拖曳方式
指引,請參閱「啟用拖曳功能」。
多執行個體
每個根活動都有自己的工作,而這些工作會在獨立的程序上執行
並在獨立視窗中顯示在另一個單獨的應用程式中啟動新的應用程式執行個體
視窗,您可以使用 FLAG_ACTIVITY_NEW_TASK
旗標開始新活動。個人中心
可與部分多視窗屬性結合使用
確定新視窗的特定位置例如,購物應用程式可顯示
透過多個視窗比較產品
Android 12 (API 級別 31) 可讓您啟動兩個活動例項 在同一個工作視窗中並排顯示
如要讓使用者從某個應用程式啟動另一個應用程式執行個體
請確認您的啟動器活動
設定 android:resizeableActivity="true"
,且不使用
即可防止多個執行個體舉例來說,singleInstancePerTask
活動
就能在不同任務中多次執行例項
FLAG_ACTIVITY_MULTIPLE_TASK
或 FLAG_ACTIVITY_NEW_DOCUMENT
已設定完成。
請勿混淆多實體與多面板版面配置 (例如 清單-詳細資料)
使用 SlidingPaneLayout
的簡報,此檔案會在單一
視窗。
請注意,當多個執行個體在折疊式裝置的個別視窗中執行時 系統就可能將一或多個執行個體傳送到背景 並輸入變更內容舉例來說,假設裝置處於展開狀態,且有兩個應用程式執行個體 它在折疊位置兩側的兩個視窗中執行如果裝置處於折疊狀態 可能會終止執行個體,而不是嘗試因應 兩個執行個體
多視窗模式驗證
無論應用程式是否指定 24 以上的 API 級別,我們都應驗證的方式 在使用者嘗試在多視窗模式下啟動時,會在多視窗模式下運作 在裝置上支援模式。
測試裝置
搭載 Android 7.0 (API 級別 24) 以上版本的裝置支援多視窗模式。
API 級別 23 以下
當使用者嘗試在多視窗模式下使用應用程式時,若應用程式未宣告固定方向,則系統會強制調整應用程式大小。
如果應用程式未宣告固定方向,則應在以下位置啟動應用程式: 搭載 Android 7.0 以上版本的裝置,並試圖 分割畫面模式確認當應用程式處於以下狀態時,使用者體驗是否可接受 強制調整大小
如果應用程式宣告了固定方向,請嘗試使應用程式進入多視窗模式。驗證當執行此動作後,應用程式是否仍維持全螢幕模式。
API 級別 24 至 30
如果應用程式的目標版本為 API 級別 24 至 30,且未停用多視窗模式支援,請在分割畫面和任意形式模式下驗證下列行為:
以全螢幕模式啟動應用程式,然後透過下列方式切換至多視窗模式: 長按「最近」按鈕。確認應用程式可正確切換。
直接在多視窗模式下啟動應用程式,並確認應用程式 才能正常啟動如要在多視窗模式下啟動應用程式,請按下 「最近」按鈕,然後長按應用程式的標題列 將圖片拖曳到螢幕上醒目顯示的區域。
拖曳畫面分隔線,即可在分割畫面模式中調整應用程式大小。驗證 應用程式調整大小時不會異常終止,且缺少必要的 UI 元素 顯示。
如果您已為應用程式指定最小尺寸,請嘗試重新調整 應用程式,讓視窗大小小於這些尺寸。請確認 您不得將應用程式調整為小於指定最小尺寸 維度。
透過所有測試,驗證應用程式的效能是否令人滿意。適用對象 例如,驗證更新 UI 的延遲時間是否太長 調整了應用程式大小
API 級別 31 以上
如果應用程式指定的 API 級別為 31 以上,且主要活動的最小寬度 且最小高度小於或等於 可用的顯示區域,驗證 API 級別 24 列出的所有行為 至 30 天
Activity#isInMultiWindowMode()
測試檢查清單
如要驗證應用程式在多視窗模式下的應用程式效能,請嘗試下列方法: operations.建議你使用分割畫面和任意形式來嘗試執行這些作業 模式除外。
進入及退出多視窗模式。
從應用程式切換至其他應用程式,驗證應用程式可正常運作 並顯示在該元件為未啟用狀態的狀態下。舉例來說 播放影片,驗證 影片會在使用者處於關閉狀態時繼續播放 與其他應用程式互動
在分割畫面模式中,嘗試移動螢幕分隔線,讓應用程式 而且檔案大小請同時嘗試並排執行這些作業 其他設定驗證應用程式不會異常終止 ,且調整大小作業所需時間不會過長。
快速連續執行多項大小調整作業。驗證應用程式 就不會當機或流失記憶體Android Studio 的記憶體分析器 應用程式記憶體用量的相關資訊 (請參閱「檢查應用程式的記憶體 記憶體分析器的使用情形)。
透過各種視窗設定正常使用應用程式,以及 驗證應用程式是否正常運作確認文字清晰易讀 UI 元素不會太小,無法互動。
多視窗模式支援已停用
在 API 級別 24 到 30 中,如果您透過設定
android:resizeableActivity="false"
,您應該在裝置上安裝應用程式
以搭載 Android 7.0 至 11 版本為目標,嘗試將應用程式放在分割畫面中
任意形式模式驗證當執行此動作後,應用程式是否仍以全螢幕顯示。
模式。
其他資源
如要進一步瞭解 Android 對多視窗模式的支援,請參閱:
- Android MultiWindowPlayground 範例
為你推薦 * 注意:系統會在 JavaScript 關閉時顯示連結文字 * 裝置相容性模式 * 支援大螢幕大小調整功能 * 處理設定變更