国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

淺談 Android 7.0 多窗口分屏模式的實現

瀏覽:108日期:2022-09-25 15:03:18

從 Android 7.0 開始,Google 推出了一個名為“多窗口模式”的新功能,也就是我們常說的“分屏模式”。那么,這個功能有什么用呢?作為開發者,我們又能做些什么?

Android 7.0 添加了對同時顯示多個 APP 的支持。在手持設備上,兩個 APP 可以在分屏模式下并排運行。

嗯,大概就是這樣:

分屏模式的適配

我們如何才能讓自己的 APP 支持分屏模式呢?

若項目的 targetSDKVersion 大于等于24,那么可以在 AndroidManifest.xml 文件的 Application 或 Activity 節點通過設置 android:resizeableActivity=['true' | 'false'] 來控制整個 APP 或某個 Activity 是否支持分屏。該屬性的默認值是 true ,也就是說,如果不設置該屬性,在支持分屏的設備上,默認是可以分屏的。

若項目的 targetSDKVersion 小于24,那么運行在支持分屏的設備上,默認可以分屏。這時如果需要禁止分屏,需要在 AndroidManifest.xml 文件的 Application 或 Activity 節點設置 android:screenOrientation 屬性來控制整個 APP 或 某個 Activity 的屏幕方向,從而控制整個 APP 或某個 Activity 禁止分屏。

分屏模式的監聽

能不能在代碼中監聽 APP 是否進入分屏模式呢?答案是能。由于 APP 在分屏模式發生改變時會執行 onMultiWindowModeChanged 方法,因此我們在 Activity 中重寫這個方法就可以實現分屏的監聽了。

@Override public void onMultiWindowModeChanged(boolean isInMultiWindowMode) { super.onMultiWindowModeChanged(isInMultiWindowMode); // 判斷當前是否為分屏模式 if (isInMultiWindowMode) { // 已進入分屏模式 } else { // 未進入分屏模式 } }

分屏模式下的生命周期

需要注意的是:進入和退出分屏模式時,Activity 的生命周期。

進入分屏模式時,Activity 的生命周期:

onPause()->onStop()->onMultiWindowModeChanged()->onDestroy()->onCreate()->onStart()->onResume()->onPause()

退出分屏模式時,Activity 的生命周期:

onStop()->onDestroy()->onCreate()->onStart()->onResume()->onPause()->onMultiWindowModeChanged()->onResume()

可以看出,在進入分屏模式時,Activity 先執行 onMultiWindowModeChanged 方法,再重建自己。在退出分屏模式時,Activity 先重建自己,再執行 onMultiWindowModeChanged 方法。

這樣呢會有一個問題,我們的 APP 進入分屏模式時,在 onMultiWindowModeChanged 方法中如果有對 UI 等的操作,經過之后的自動重建就沒有效果了。為了防止這種情況,需要在 AndroidManifest.xml 的 Activity 節點設置以下屬性:

android:configChanges='screenSize|smallestScreenSize|screenLayout|orientation'

設置了這個屬性,在進入分屏模式時,Activity 就不會自動重建了。

分屏模式的判斷

我們可以通過 Activity 的 isInMultiWindowMode() 方法獲取當前是否進入分屏模式,該方法返回 true 表示當前已進入分屏模式,返回 false 則表示當前未進入分屏模式。

if (isInMultiWindowMode()) { // 已進入分屏模式 } else { // 未進入分屏模式 }

分屏模式下打開 Activity

如果 APP 在分屏模式下打開 Activity 時,為 Intent 設置了 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT 和 Intent.FLAG_ACTIVITY_NEW_TASK 標志,那么新打開的 Activity 將顯示在當前 APP 的另一側。例如下面的代碼:

Intent intent = new Intent(this, NewActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT|Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);

如圖,原始 Activity 分屏后顯示在屏幕上半部分,新打開的 Activity 顯示在原始 Activity 下方(屏幕的下半部分)。

到此這篇關于淺談 Android 7.0 多窗口分屏模式的實現的文章就介紹到這了,更多相關Android7.0 多窗口分屏內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 国产精品成人一区二区 | 国产成人在线视频免费观看 | 中文字幕欧美日韩一 | 免费高清特黄a 大片 | 国产一区二区三区视频在线观看 | 91精品久久国产青草 | 国产欧美一区二区三区在线看 | 亚洲精品久久99久久 | 久久综合精品国产一区二区三区 | 亚洲综合视频在线观看 | 亚洲片在线观看 | 日本黄色免费大片 | 亚洲视频日韩视频 | 欧美一级特黄aaaaaa在线看片 | 亚洲综合日韩欧美一区二区三 | 91久久精品国产91久久性色tv | 美女视频永久黄网站免费观看国产 | 日韩一区二区三区精品 | 亚洲国产一区二区三区在线观看 | 久久精品国产亚洲7777小说 | 一级黄色片aaa | 久久美女精品国产精品亚洲 | 12至16末成年毛片视频 | 九九精品视频在线 | 国产一级特黄全黄毛片 | 免费一区二区三区视频狠狠 | 国产丝袜美女一区二区三区 | 一区二区三区国产精品 | 日本特黄a级高清免费酷网 日本特黄特色 | 草草影院ccyy免费看片 | 国产黄色大片网站 | 欧美一级看片免费观看视频在线 | 精品久久久久久久 | 欧美一级淫片免费观看 | 最新理论三级中文在线观看 | 亚洲国产爱久久全部精品 | 成人国产精品一级毛片视频 | 亚洲一级毛片在线观播放 | 狠狠色丁香婷婷久久综合考虑 | 亚洲国产精品一区二区三区在线观看 | 一级毛片免费不卡在线视频 |