Android N新特性 多視窗模式適配

2021-07-30 16:20:09 字數 2532 閱讀 2686

那麼,如果我們的應用要支援這個模式並且不讓這個訊息彈出來,要怎麼做呢?

很簡單,只需要在activity宣告的時候加入乙個屬性resizeableactivity,並且設定其值為true即可:

android:name=".mainactivity"

android:resizeableactivity="true">

android:name="android.intent.action.main"/>

android:name="android.intent.category.launcher"/>

intent-filter>

activity>

這個屬性的設定會導致三種情況:

① 如果不宣告這個屬性,那麼預設允許進入多視窗模式,但是會有上面的提示(第一次執行的時候)

② 如果宣告了這個屬性,並設定值為true,那麼允許進入多視窗模式,並且不會提示

③ 如果宣告了這個屬性,並設定值為false,那麼不允許進入多視窗模式,只允許全屏顯示

若應用targetsdkversion為n,則該應用下所有activity的resizeableactivity屬性均預設為true,即該應用下的所有activity均能支援多視窗顯示。

若activity1配置resizeableactivity為true,activity1、activity2、activity3均處於同一task,則activity2和activity3均能在多視窗下顯示(即使activity2和activity3沒有配置resizeableactivity屬性)。

若activity2需全屏顯示,則需按以下步驟配置:

1、設定resizeableactivity為false

2、activity1啟動activity2時,設定flag_activity_new_task,activity2執行在單獨的task,即和activity1不在同一task。

多視窗下對應用視窗大小縮放,會觸發configuration變化,可能的變化有screensize、smallestscreensize、layoutdirection、screenlayout、orientation,建議activity的manifest配置configchanges,否則activity將被銷毀重建,可能導致卡頓和跟體驗差。

我們知道,values-sw400dp,sw400dp就表明了這個value是在螢幕最短邊大於等於400dp的時候生效(前提是有其他不同的value資料夾)

因此在configchanges時候,應用便會去自動尋找匹配的alues值,從而改變我們layout

在寬度變化的時候,我們的應用可能最小dp只有200dp這樣,而以往我們很少適配200dp的螢幕

如何知道是否處於多視窗模式

說明:n版本api activity類新增inmultiwindow方法,判斷當前activity是否處於多視窗模

式(split-screen,freeform,pip)

如何知道是否處於pip模式

說明:n版本api activity類新增inpictureinpicture方法,判斷當前activity是否處於pip模式。

如何監聽是否進入多視窗模式

說明:n版本api activity類新增onmultiwindowmodechanged方法,監聽activity是否進入

多視窗模式。

注:inmultiwindow為true,則表示處於多視窗模式(split-screen,freeform,pip);否則,已退出多視窗模式。

如何監聽是否進入pip模式

說明:n版本api activity類新增onpictureinpicturechanged方法,監聽activity是否進入

pip模式。

inpictureinpicture為true,則表示處於pip模式;否則,已退出pip模式。如果activity要進入pip模式,可通過呼叫 方法,使activity自身

進入pip模式,前提條件是該activity的 為true。

要在另乙個視窗中開啟乙個activity,接著我們只需要給這個intent設定乙個標籤,完整**如下:

intent

intent = new intent(intent.action_view);

intent.setdata(geolocation);

intent.addflags(intent.flag_activity_launch_adjacent);

這個時候我們再執行,呼叫的視窗會在另乙個視窗中被開啟。

vim多視窗操作 建立新的視窗

vim中,預設的多視窗開啟,是橫向分割視窗。1 new 命令 new 新建乙個未命名視窗 new name 新建乙個名為name的視窗 2 split命令 橫向分割視窗 split name 在當前位置開啟name視窗 將原來檔案向下移動 sp name 是split的縮寫 與split功能相同 如...

多視窗模式程式設計介紹

多視窗會改變應用大小,先啟動activity,再進入多視窗模式,activity會重建。重建後,進入onpause方法。android name mainactivity android configchanges orientation keyboardhidden screensize scre...

多視窗模式程式設計的一些知識

在android7.0系統中引入了乙個非常有特色的功能多視窗模式,它允許我們在同乙個螢幕中同時開啟兩個應用程式。進入和退出多視窗模式 進入多視窗模式 退出多視窗模式 多視窗模式下的生命週期 多視窗模式並不會改變活動原有的生命週期,只是會將使用者最近互動過的那個活動設定為執行狀態,而將多視窗模式下另外...