日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android 畫中畫模式的實(shí)現(xiàn)示例

瀏覽:20日期:2022-09-21 13:13:14
畫中畫支持

Android 8.0(API 級(jí)別 26)允許以畫中畫模式啟動(dòng) Activity。畫中畫是一種特殊類型的多窗口模式,最常用于視頻播放。使用該模式,用戶可以通過(guò)固定到屏幕一角的小窗口觀看視頻,同時(shí)在應(yīng)用之間進(jìn)行導(dǎo)航或?yàn)g覽主屏幕上的內(nèi)容。

畫中畫利用 Android 7.0 中的多窗口模式 API 來(lái)提供固定的視頻疊加窗口。要將畫中畫添加到您的應(yīng)用中,您需要注冊(cè)支持畫中畫的 Activity、根據(jù)需要將 Activity 切換為畫中畫模式,并確保當(dāng) Activity 處于畫中畫模式時(shí),界面元素處于隱藏狀態(tài)且視頻能夠繼續(xù)播放。

畫中畫窗口會(huì)顯示在屏幕的最上層,位于系統(tǒng)選擇的一角。您可以將畫中畫窗口拖動(dòng)到其他位置。當(dāng)您點(diǎn)按該窗口時(shí),會(huì)看到兩個(gè)特殊的控件:全屏切換開關(guān)(位于窗口的中心)和關(guān)閉按鈕(右上角的“X”)。

您的應(yīng)用會(huì)控制當(dāng)前 Activity 在何時(shí)進(jìn)入畫中畫模式。以下是一些示例:

Activity 可以在用戶點(diǎn)按主屏幕或最近使用的應(yīng)用按鈕來(lái)選擇其他應(yīng)用時(shí),進(jìn)入畫中畫模式。(這就是 Google 地圖在用戶同時(shí)運(yùn)行其他 Activity 時(shí)繼續(xù)顯示方向的方式。) 您的應(yīng)用可以在用戶從某個(gè)視頻返回以瀏覽其他內(nèi)容時(shí),將該視頻切換到畫中畫模式。 您的應(yīng)用可以在用戶觀看到某集內(nèi)容的結(jié)束時(shí)將視頻切換到畫中畫模式。主屏幕會(huì)顯示有關(guān)這部電視劇下一集的宣傳信息或劇情摘要信息。 您的應(yīng)用可以提供一種方式,讓用戶可以在觀看視頻時(shí)將其他內(nèi)容加入播放隊(duì)列。當(dāng)主屏幕顯示內(nèi)容選擇 Activity 時(shí),視頻會(huì)繼續(xù)以畫中畫模式播放。聲明對(duì)畫中畫的支持

默認(rèn)情況下,系統(tǒng)不會(huì)自動(dòng)為應(yīng)用提供畫中畫支持。要想在應(yīng)用中支持畫中畫,您可以通過(guò)將 android:supportsPictureInPicture 和 android:resizeableActivity 設(shè)置為 true,在清單中注冊(cè)視頻 Activity。此外,指定您的 Activity 會(huì)處理布局配置更改,這樣一來(lái),在畫中畫模式轉(zhuǎn)換期間發(fā)生布局更改時(shí),您的 Activity 不會(huì)重新啟動(dòng)。

<activity android:name='VideoActivity' android:resizeableActivity='true' android:supportsPictureInPicture='true' android:configChanges= 'screenSize|smallestScreenSize|screenLayout|orientation' ...將您的 Activity 切換到畫中畫模式

要進(jìn)入畫中畫模式,Activity 必須調(diào)用 enterPictureInPictureMode()。例如,以下代碼會(huì)在用戶點(diǎn)擊應(yīng)用界面中的專用按鈕時(shí),將 Activity 切換到畫中畫模式:

@Override public void onActionClicked(Action action) { if (action.getId() == R.id.lb_control_picture_in_picture) { getActivity().enterPictureInPictureMode(); return; } ... }

您可能需要添加將 Activity 切換到畫中畫模式(而不是進(jìn)入后臺(tái))的邏輯。例如,如果用戶在 Google 地圖正在導(dǎo)航時(shí)按下主屏幕或最近使用的應(yīng)用按鈕,則該應(yīng)用會(huì)切換到畫中畫模式。您可以通過(guò)替換 onUserLeaveHint() 來(lái)具體了解這種情況:

@Override public void onUserLeaveHint () { if (iWantToBeInPipModeNow()) { enterPictureInPictureMode(); } }在畫中畫期間處理界面

當(dāng) Activity 進(jìn)入或退出畫中畫模式時(shí),系統(tǒng)會(huì)調(diào)用 Activity.onPictureInPictureModeChanged() 或 Fragment.onPictureInPictureModeChanged()。

您應(yīng)替換這些回調(diào)以重新繪制 Activity 的界面元素。請(qǐng)注意,在畫中畫模式下,您的 Activity 會(huì)在一個(gè)小窗口中顯示。在畫中畫模式下,用戶可能看不清小界面元素的詳細(xì)信息,因此不會(huì)與這些界面元素互動(dòng)。界面極簡(jiǎn)的視頻播放 Activity 可提供出色的用戶體驗(yàn)。Activity 應(yīng)僅顯示視頻播放控件。在 Activity 進(jìn)入畫中畫模式之前移除其他界面元素,并在 Activity 再次變?yōu)槿習(xí)r恢復(fù)這些元素:

@Override public void onPictureInPictureModeChanged (boolean isInPictureInPictureMode, Configuration newConfig) { if (isInPictureInPictureMode) { // Hide the full-screen UI (controls, etc.) while in picture-in-picture mode. } else { // Restore the full-screen UI. ... } }添加控件

畫中畫窗口會(huì)在用戶打開窗口菜單(通過(guò)點(diǎn)按移動(dòng)設(shè)備上的窗口或使用電視遙控器選擇菜單)時(shí)顯示控件。

如果應(yīng)用有一個(gè)活躍的媒體會(huì)話,則窗口會(huì)顯示播放、暫停、下一個(gè)和上一個(gè)控件。

您還可以通過(guò)在進(jìn)入畫中畫模式之前構(gòu)建 PictureInPictureParams(使用 PictureInPictureParams.Builder.setActions())來(lái)明確指定自定義操作,并使用 enterPictureInPictureMode(android.app.PictureInPictureParams) 或 setPictureInPictureParams(android.app.PictureInPictureParams) 在進(jìn)入畫中畫模式時(shí)傳遞這些參數(shù)。請(qǐng)注意,如果您嘗試添加的控件數(shù)量超過(guò) getMaxNumPictureInPictureActions(),則系統(tǒng)只會(huì)添加上限數(shù)量的控件。

在畫中畫模式下繼續(xù)播放視頻

當(dāng)您的 Activity 切換到畫中畫模式時(shí),系統(tǒng)會(huì)將該 Activity 置于暫停狀態(tài)并調(diào)用 Activity 的 onPause() 方法。如果該 Activity 在畫中畫模式下暫停,則視頻播放不得暫停,而應(yīng)繼續(xù)播放。

在 Android 7.0 及更高版本中,當(dāng)系統(tǒng)調(diào)用 Activity 的 onStop() 時(shí),您應(yīng)暫停視頻播放;當(dāng)系統(tǒng)調(diào)用 Activity 的 onStart() 時(shí),您應(yīng)恢復(fù)視頻播放。這樣一來(lái),您就無(wú)需在 onPause() 中檢查應(yīng)用是否處于畫中畫模式,只需繼續(xù)播放視頻即可。

如果您必須在 onPause() 實(shí)現(xiàn)中暫停播放,請(qǐng)通過(guò)調(diào)用 isInPictureInPictureMode() 檢查畫中畫模式并相應(yīng)地處理播放情況,例如:

@Override public void onPause() { // If called while in PIP mode, do not pause playback if (isInPictureInPictureMode()) { // Continue playback ... } else { // Use existing playback logic for paused Activity behavior. ... } }

當(dāng)您的 Activity 從畫中畫模式切換回全屏模式時(shí),系統(tǒng)會(huì)恢復(fù)您的 Activity 并調(diào)用 onResume() 方法。

對(duì)單個(gè)播放 Activity 使用畫中畫模式

在您的應(yīng)用中,用戶可能會(huì)在主屏幕上瀏覽內(nèi)容時(shí)選擇新的視頻,同時(shí)還有一個(gè)視頻播放 Activity 正處于畫中畫模式。應(yīng)以全屏模式在現(xiàn)有的播放 Activity 中播放新的視頻,而不是啟動(dòng)可能會(huì)令用戶感到困惑的新 Activity。

要確保將單個(gè) Activity 用于視頻播放請(qǐng)求并根據(jù)需要進(jìn)入或退出畫中畫模式,請(qǐng)?jiān)谇鍐沃袑?Activity 的 android:launchMode 設(shè)置為 singleTask:

<activity android:name='VideoActivity' ... android:supportsPictureInPicture='true' android:launchMode='singleTask' ...

在您的 Activity 中,替換 onNewIntent() 并處理新的視頻,從而根據(jù)需要停止任何現(xiàn)有的視頻播放。

最佳做法

低內(nèi)存設(shè)備可能無(wú)法使用畫中畫模式。在應(yīng)用使用畫中畫之前,請(qǐng)務(wù)必通過(guò)調(diào)用 hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) 進(jìn)行檢查以確保可以使用畫中畫。

畫中畫旨在用于播放全屏視頻的 Activity。將 Activity 切換到畫中畫模式時(shí),請(qǐng)避免顯示視頻內(nèi)容以外的任何內(nèi)容。跟蹤您的 Activity 何時(shí)進(jìn)入畫中畫模式及隱藏界面元素,如在畫中畫期間處理界面中所述。

由于畫中畫窗口在屏幕的一角顯示為浮動(dòng)窗口,因此您應(yīng)避免在主屏幕中可能被畫中畫窗口遮蓋的任何區(qū)域內(nèi)顯示重要信息。

當(dāng) Activity 進(jìn)入畫中畫模式后,它默認(rèn)沒(méi)有獲得輸入焦點(diǎn)。要在畫中畫模式下接收輸入事件,請(qǐng)使用 MediaSession.setCallback()。如需詳細(xì)了解如何使用 setCallback(),請(qǐng)參閱顯示“正在播放”卡片。

當(dāng)您的應(yīng)用處于畫中畫模式時(shí),畫中畫窗口中的視頻播放可能會(huì)對(duì)其他應(yīng)用(例如,音樂(lè)播放器應(yīng)用或語(yǔ)音搜索應(yīng)用)造成音頻干擾。為避免出現(xiàn)此問(wèn)題,請(qǐng)?jiān)陂_始播放視頻時(shí)請(qǐng)求音頻焦點(diǎn),并處理音頻焦點(diǎn)更改通知,如管理音頻焦點(diǎn)中所述。如果您在處于畫中畫模式時(shí)收到音頻焦點(diǎn)丟失通知,請(qǐng)暫停或停止視頻播放。

到此這篇關(guān)于Android 畫中畫模式的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Android 畫中畫內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区二区av| av不卡在线| 日韩欧美2区| 国产亚洲欧洲| 亚洲精品免费观看| 欧美日韩亚洲一区| 国产中文字幕一区二区三区| 在线亚洲人成| 欧美日韩四区| 亚欧洲精品视频在线观看| 日本不卡中文字幕| 久久中文字幕一区二区| 蜜臀国产一区| 天堂va蜜桃一区二区三区| 亚洲精品进入| 精品欧美视频| 午夜久久免费观看| 亚州欧美在线| 精品视频一二| 91精品电影| 国产一卡不卡| 亚洲成av人片一区二区密柚| 一区在线视频观看| 国产视频网站一区二区三区| 91av亚洲| 免费在线成人网| 久久成人高清| 合欧美一区二区三区| 欧美日韩视频免费看| 麻豆一区二区99久久久久| 欧美一区二区三区激情视频| 日韩一二三区在线观看| 97精品国产福利一区二区三区| 午夜国产一区二区| 欧美日韩精品一区二区三区视频| 欧美激情另类| 日韩在线电影| 91精品国产福利在线观看麻豆| 日韩在线网址| 久久影视一区| 国产福利一区二区精品秒拍| 婷婷久久一区| 精品久久久久中文字幕小说| 蜜桃久久精品一区二区| 精品亚洲免a| 蜜臀av亚洲一区中文字幕| 精品国产午夜肉伦伦影院| 一区二区亚洲视频| 成人看片网站| 国产探花一区在线观看| 黄色亚洲在线| 国产精品13p| 91av一区| 老色鬼久久亚洲一区二区| 日韩大片免费观看| 欧美在线不卡| 国内激情久久| 国产成人免费视频网站视频社区| 亚洲一区二区日韩| 蜜桃一区二区三区| 不卡专区在线| 美腿丝袜亚洲三区| 欧美中文一区二区| 亚洲免费福利| 欧美激情日韩| 亚洲精品观看| 老牛影视一区二区三区| 激情欧美国产欧美| 超级白嫩亚洲国产第一| 国产精品极品国产中出| 日韩在线观看一区二区| 日产精品一区| 精品国产aⅴ| 久久国际精品| 日韩国产在线一| 午夜亚洲福利| 中文字幕亚洲精品乱码| 日韩中文字幕91| 亚洲大全视频| 日韩高清欧美| 精品一区91| 精品三区视频| 久久精品人人| 国产精品www994| 欧美欧美黄在线二区| 午夜亚洲福利| 亚洲精品国产日韩| 天堂av一区| 日本精品一区二区三区在线观看视频| 亚洲欧美视频一区二区三区| 午夜一级在线看亚洲| 欧美日韩视频| 99视频精品| 久久亚洲美女| 久久国产精品99国产| 亚洲在线成人| 亚洲一区av| 日韩精品亚洲专区在线观看| 日韩精品免费一区二区夜夜嗨 | 免费毛片在线不卡| 亚洲一级黄色| 国产亚洲毛片在线| 亚洲精选91| 国产探花一区| 麻豆91小视频| 国产aⅴ精品一区二区四区| 91亚洲国产成人久久精品| 久久精品一区| 在线看片福利| 精品一区毛片| 日本大胆欧美人术艺术动态| 亚洲字幕久久| 国产午夜久久av| 精品一区av| 日本高清不卡一区二区三区视频| 久久免费黄色| 免费精品视频在线| 国产欧美88| 香蕉视频亚洲一级| 亚洲电影在线| 亚洲免费资源| 老司机免费视频一区二区| 国产66精品| 午夜久久福利| 国产精品一区二区中文字幕| 久久亚洲精品中文字幕| 久久精品亚洲人成影院| 免费观看在线色综合| 国产精品一区二区免费福利视频| 色婷婷色综合| av不卡免费看| 国产乱码精品一区二区三区亚洲人| 国产一区二区三区日韩精品| 性欧美69xoxoxoxo| 国产一级成人av| 久久国产中文字幕| 日本欧美久久久久免费播放网| 美女久久久久久| 午夜久久免费观看| 国产精品成人**免费视频| 亚洲天堂黄色| 久久国产视频网| 国产一区日韩一区| 国产情侣久久| 九色精品91| 国产精品一区二区免费福利视频| 久久精品二区三区| 四虎精品永久免费| 日韩精品诱惑一区?区三区| 蜜臀av一区二区三区| 日韩.com| 日本亚州欧洲精品不卡| 成人片免费看| 日本一区二区三区中文字幕| 亲子伦视频一区二区三区| 国产亚洲欧美日韩在线观看一区二区| 99视频精品全国免费| 国产欧美一区二区精品久久久| 99tv成人| 国产精品s色| 丝瓜av网站精品一区二区| 国产一区二区亚洲| 日本免费新一区视频| 91成人精品视频| 久久一区亚洲| 日韩在线观看中文字幕| 黄色精品网站| 韩国女主播一区二区三区| 午夜天堂精品久久久久| 国产精品99一区二区| 精品美女视频 | 老司机精品久久| 蜜桃成人精品| 免费亚洲婷婷| 亚洲欧美日本国产| 国户精品久久久久久久久久久不卡| 久久99影视| 日韩精品免费一区二区夜夜嗨| 999国产精品999久久久久久| 精品国产亚洲一区二区三区| 91精品福利观看| 视频精品一区二区| 欧美二区视频| 中文字幕在线高清| 精品三级国产| 欧美1区2区3| 91精品国产一区二区在线观看| 午夜在线视频观看日韩17c| 日本精品影院| 国产白浆在线免费观看| 国产精品18| 国产日韩一区二区三区在线| 亚洲日产国产精品| 亚洲一区二区日韩| 丝瓜av网站精品一区二区| 午夜欧美精品| 欧美日韩一区二区三区视频播放| 国产夫妻在线| 国产高潮在线| 激情视频网站在线播放色 |