午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

淺談 Android 7.0 多窗口分屏模式的實(shí)現(xiàn)

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

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

Android 7.0 添加了對(duì)同時(shí)顯示多個(gè) APP 的支持。在手持設(shè)備上,兩個(gè) APP 可以在分屏模式下并排運(yùn)行。

嗯,大概就是這樣:

分屏模式的適配

我們?nèi)绾尾拍茏屪约旱?APP 支持分屏模式呢?

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

若項(xiàng)目的 targetSDKVersion 小于24,那么運(yùn)行在支持分屏的設(shè)備上,默認(rèn)可以分屏。這時(shí)如果需要禁止分屏,需要在 AndroidManifest.xml 文件的 Application 或 Activity 節(jié)點(diǎn)設(shè)置 android:screenOrientation 屬性來控制整個(gè) APP 或 某個(gè) Activity 的屏幕方向,從而控制整個(gè) APP 或某個(gè) Activity 禁止分屏。

分屏模式的監(jiān)聽

能不能在代碼中監(jiān)聽 APP 是否進(jìn)入分屏模式呢?答案是能。由于 APP 在分屏模式發(fā)生改變時(shí)會(huì)執(zhí)行 onMultiWindowModeChanged 方法,因此我們?cè)?Activity 中重寫這個(gè)方法就可以實(shí)現(xiàn)分屏的監(jiān)聽了。

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

分屏模式下的生命周期

需要注意的是:進(jìn)入和退出分屏模式時(shí),Activity 的生命周期。

進(jìn)入分屏模式時(shí),Activity 的生命周期:

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

退出分屏模式時(shí),Activity 的生命周期:

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

可以看出,在進(jìn)入分屏模式時(shí),Activity 先執(zhí)行 onMultiWindowModeChanged 方法,再重建自己。在退出分屏模式時(shí),Activity 先重建自己,再執(zhí)行 onMultiWindowModeChanged 方法。

這樣呢會(huì)有一個(gè)問題,我們的 APP 進(jìn)入分屏模式時(shí),在 onMultiWindowModeChanged 方法中如果有對(duì) UI 等的操作,經(jīng)過之后的自動(dòng)重建就沒有效果了。為了防止這種情況,需要在 AndroidManifest.xml 的 Activity 節(jié)點(diǎn)設(shè)置以下屬性:

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

設(shè)置了這個(gè)屬性,在進(jìn)入分屏模式時(shí),Activity 就不會(huì)自動(dòng)重建了。

分屏模式的判斷

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

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

分屏模式下打開 Activity

如果 APP 在分屏模式下打開 Activity 時(shí),為 Intent 設(shè)置了 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT 和 Intent.FLAG_ACTIVITY_NEW_TASK 標(biāo)志,那么新打開的 Activity 將顯示在當(dāng)前 APP 的另一側(cè)。例如下面的代碼:

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

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

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

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 亚洲五月婷| 日本成人在线视频网站 | 亚洲一区在线免费观看 | 黄视频网站在线观看 | 免费在线日韩 | 久久成人在线 | a在线观看免费 | 激情第四色 | 一级免费看片 | 欧美看片| 什么网站可以看毛片 | 99热香蕉 | 青青草原亚洲 | 精品偷拍网 | 国产午夜一级 | 95看片淫黄大片一级 | 国产精品99久久久久久成人 | 天天干天天操天天 | h网在线观看 | 日韩经典一区二区三区 | 成人免费网站在线观看 | 中文字幕在线第一页 | 欧美精品久久久久久久久久 | 国产v在线观看 | 国产黄色精品视频 | 欧美 中文字幕 | 一区二区三区中文字幕 | 国产精品久久久久久久成人午夜 | 精品国产一区二区三区在线观看 | 午夜肉伦伦 | 亚日韩av| 欧美成人免费一级人片100 | 成人自拍视频 | 在线免费观看成年人视频 | 日日爽爽| 日韩精品一 | 欧美日批视频 | 久久久久久久久久97 | 久久久资源 | 黄色资源在线观看 | 成人短视频在线播放 |