Android 8.0 Oreo 畫中畫模式

Android 8.0 Oreo(API Level 26)允許活動啟動畫中畫 Picture-in-picture(PIP)模式。PIP 是一種特殊類型的多窗口模式,主要用于視頻播放。PIP 模式已經可用于 Android TV,而 Android 8.0 則讓該功能可進一步用于其他 Android 設備。

畫中畫 Picture-in-picture(PIP)模式


當一個活動在畫中畫模式,它處于暫停狀態(tài),但應繼續(xù)展示內容。出于這個原因,您應該確保您的應用程序不在的onpause ( )中處理暫停播放。相反,您應該在onstop ( )暫停播放·,在onstart ( )中繼續(xù)播放。



指定您的活動可以使用畫中畫模式

從 Android 8.0 開始,如果您支持畫中畫模式,您不需要在 Manifest 中設android:resizeableActivity為 true,您只需要在其他多窗口模式中設置android:resizeableActivity

Android 8.0(API Level 26)引入了一個新的對象PictureInPictureParams,您通過畫中畫方法指定一個活動應該表現(xiàn)的畫中畫模式。該對象指定性能例如首選縱橫比。

現(xiàn)在不僅僅是在 Android TV 上,還可以在所有 Android 設備上使用 “添加畫中畫” 中描述的現(xiàn)有 PIP 方法。此外,Android 8.0 還提供以下方法來支持 PIP 模式:

Activity.enterPictureInPictureMode (PictureInPictureParams args): 將活動放在畫中畫模式中。在args中指定活動的寬高比和其他配置設置。如果args中的任何字段為空,系統(tǒng)將使用您上次調用的Activity.setPictureInPictureParams ( )。指定的活動被放置在屏幕的一個角落;屏幕的其余部分都填充了屏幕上的先前活動。進入畫中畫模式的活動進入暫停狀態(tài),但仍保持啟動狀態(tài)。 如果用戶點擊畫中畫活動,則系統(tǒng)顯示給用戶交互菜單,在畫中畫模式中,沒有任何觸摸操作可以回到活動。

Activity.setPictureInPictureParams ( ): 更新活動的畫中畫配置。 如果活動當前處于畫中畫模式,這時將會更新,這在活動比發(fā)生變化的時候是很有用的。 如果活動不在畫中畫模式中,這些設置不管您是否調用了enterPictureInPictureMode ( )方法,它都會生效。

Android 多窗口支持

兩個應用在分屏模式中左右并排顯示


從 Android 7.0 Nougat 開始,Android 允許多個應用同時共享屏幕。例如:用戶可以分屏顯示應用,在左邊查看網(wǎng)頁,同時在右邊寫郵件。 這些功能取決于:

運行 Android 設備具有分屏模式。 在此模式中,系統(tǒng)以左右并排或上下并排的方式分屏顯示兩個應用。 用戶可以拖動兩個應用之間的分界線,放大其中一個應用,同時縮小另一個。

在運行 Android 的 Nexus Player 上,應用能以畫中畫模式顯示,即在用戶瀏覽網(wǎng)頁或與其他應用交互的同時繼續(xù)顯示內容。

較大設備的制造商可選擇啟用自由形狀模式,在該模式中,用戶可以自由調整各 Activity 的尺寸。 若制造商啟用此功能,設備將同時具有自由形狀模式和分屏模式。

用戶可以通過以下方式切換到多窗口模式:

若用戶打開 Overview 屏幕并長按 Activity 標題,則可以拖動該 Activity 至屏幕突出顯示的區(qū)域,使 Activity 進入多窗口模式。

若用戶長按 Overview 按鈕,設備上的當前 Activity 將進入多窗口模式,同時將打開 Overview 屏幕,用戶可在該屏幕中選擇要共享屏幕的另一個 Activity。

用戶可以在兩個 Activity 共享屏幕的同時在這兩個 Activity 之間拖放數(shù)據(jù) (在此之前,用戶只能在一個 Activity 內部拖放數(shù)據(jù))。

針對多窗口模式配置應用

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

android:resizeableActivity

在 Manifest 的或節(jié)點中設置該屬性,啟用或禁用多窗口顯示:

android:resizeableActivity=["true"|"false"]

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

多窗口模式中被禁用的功能

在設備處于多窗口模式中時,某些功能會被禁用或忽略,因為這些功能對與其他 Activity 或應用共享設備屏幕的 Activity 而言沒有意義。 此類功能包括:

某些系統(tǒng) UI 自定義選項將被禁用;例如:在非全屏模式中,應用無法隱藏狀態(tài)欄。

系統(tǒng)將忽略對 android:screenOrientation 屬性所作的更改。

布局屬性

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

android:defaultWidth

以自由形狀模式啟動時 Activity 的默認寬度。

android:defaultHeight

以自由形狀模式啟動時 Activity 的默認高度。

android:gravity

以自由形狀模式啟動時 Activity 的初始位置。

android:minimalHeight、android:minimalWidth

分屏和自由形狀模式中 Activity 的最小高度和最小寬度。 如果用戶在分屏模式中移動分界線,使 Activity 尺寸低于指定的最小值,系統(tǒng)會將 Activity 裁剪為用戶請求的尺寸。

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

android:defaultWidth="600dp"

android:gravity="top|end"

android:minimalHeight="450dp"

android:minimalWidth="300dp"/>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容