Android分屏多窗口的實踐代碼
Android N 中推出了多窗口支持,項目要求適配多窗口模式,記錄一下。
1.生命周期:對于完全沒有適配多窗口的APP來說,當啟用多窗口模式或者拖動窗口時,會出現(xiàn)Activity銷毀重新加載的現(xiàn)象。 解決方法:在manifest文件里面給activity加上下面一行屬性
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
2.當啟用多窗口模式時,可能有改變原UI的需求,這時可以在代碼里面修改:
@Override public void onMultiWindowModeChanged(boolean isInMultiWindowMode) { super.onMultiWindowModeChanged(isInMultiWindowMode); //在此處根據(jù)isInMultiWindowMode來適配多窗口UI }
onMultiWindowModeChanged在Activity,fragment里面都有,會在多窗口模式變化的時候調用該方法。不過注意了,當已經是多窗口模式時,進入新頁面,并不會調用該方法。那怎么辦呢?可以用下面這個方法來判斷當前是否是多窗口狀態(tài),最低兼容SDK版本是24:
Activity().isInMultiWindowMode()
可以用Activity的這個方法判斷。當是多窗口時隱藏或者顯示某些布局。
3.如果要在拖動多窗口的過程中,動態(tài)改變布局,可以在manifest文件里面對相應的activity配置,例如:
<activity android:name="com.android.multiwindowplayground.activities.MinimumSizeActivity" android:launchMode="singleInstance" android:taskAffinity=""> <layout android:defaultHeight="500dp" android:defaultWidth="750dp" android:gravity="top|end" android:minWidth="500dp" android:minHeight="500dp" /> </activity>
然后在activity的布局文件里面,設置線性布局的layout_gravity和權重:
<LinearLayout android:id="@+id/layout" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical"> <ScrollView android:id="@+id/scrollview" android:layout_width="match_parent" android:layout_height="0dp" android:layout_gravity="top" android:layout_weight="0.75"> <TextView android:id="@+id/description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:textColor="@color/white" /> </ScrollView> <include layout="@layout/logging" android:layout_width="match_parent" android:layout_height="0dp" android:layout_gravity="bottom" android:layout_weight="0.25" /> </LinearLayout>
就會在拖動的過程中自動改變。這是Android官方的一個demo。
4.在拖動多窗口的過程中,也可以在代碼里面動態(tài)設置,會調用onConfigurationChanged方法,在Configuration newConfig參數(shù)中有很多信息,就有當前應用的寬高信息。
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); int screenWidthDp=newConfig.screenWidthDp; int screenHeightDp=newConfig.screenHeightDp; //根據(jù)寬高動態(tài)改變布局 }
最后推薦:Android官方文檔
以上所述是小編給大家介紹的Android分屏多窗口的實踐代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- 淺談 Android 7.0 多窗口分屏模式的實現(xiàn)
- Android Studio升級3.6 Build窗口出現(xiàn)中文亂碼問題解決方法
- Android開發(fā)實現(xiàn)模仿微信小窗口功能【Dialog對話框風格窗口】
- Android監(jiān)聽系統(tǒng)來電并彈出提示窗口
- Android開發(fā)實現(xiàn)popupWindow彈出窗口自定義布局與位置控制方法
- Android Popupwindow彈出窗口的簡單使用方法
- Android使用Activity實現(xiàn)從底部彈出菜單或窗口的方法
- Android自定義彈出窗口PopupWindow使用技巧
- Android窗口小部件基礎編寫代碼實例
相關文章
Android BroadcastReceiver實現(xiàn)網(wǎng)絡狀態(tài)實時監(jiān)聽
這篇文章主要為大家詳細介紹了Android BroadcastReceiver實現(xiàn)網(wǎng)絡狀態(tài)實時監(jiān)聽,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05導入takephoto庫編譯失敗與glide庫沖突應排除依賴
今天小編就為大家分享一篇關于導入takephoto庫編譯失敗與glide庫沖突應排除依賴的文章,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10Android ExpandableListView長按事件的完美解決辦法
本篇文章是對Android中ExpandableListView長按事件的解決方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06Android編程圖片加載類ImageLoader定義與用法實例分析
這篇文章主要介紹了Android編程圖片加載類ImageLoader定義與用法,結合實例形式分析了Android圖片加載類ImageLoader的功能、定義、使用方法及相關操作注意事項,代碼中備有較為詳盡的注釋便于理解,需要的朋友可以參考下2017-12-12sweet alert dialog 在android studio應用問題說明詳解
這篇文章主要介紹了sweet alert dialog 在android studio應用問題說明詳解的相關資料,本文圖文并茂介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-09-09