版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。
https://blog.csdn.net/susan_123456/article/details/85225548
一、分屏
進入分屏模式:
Android N允許使用者一次在螢幕中使用兩個App。使用者可以左右并排/上下擺放兩個App來使用,還可以左右/上下拖拽中間的分割線來改變兩個App的尺寸。
android7.0分屏适配
如何操作分屏模式:
(1)從全屏-分屏,目前顯示自己的應用頁面,長按多任務鍵時出現分屏;
(2)從分屏-全屏,分屏時長按多任務鍵,全屏顯示自己的應用或者拖動分割線至全屏顯示;
二、生命周期:
package com.example.text.appadaptiondemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "lifeCycle";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "======onCreate=====");
}
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "======onStart=====");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "======onResume=====");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "======onPause=====");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "======onStop=====");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "======onDestroy=====");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG, "======onRestart=====");
}
@Override
public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
super.onMultiWindowModeChanged(isInMultiWindowMode);
Log.i(TAG, "======onMultiWindowModeChanged=====");
}
}
(1)分屏時activity的生命周期:目前顯示自己的應用頁面,長按多任務鍵時出現分屏
onPause()-onStop()-onMultiWindowModeChanged()-onDestroy()-onCreate()-onStart()-onResume()-onPause()
(2)從分屏頁到自己的應用:分屏時長按多任務鍵,全屏顯示自己的應用
onStop()-onDestroy()-onCreate()-onStart()-onResume()-onPause()-onMultiWindowModeChanged()-onResume()
在分屏模式中,由于一個App可以在對使用者可見的狀态下進入paused狀态,是以在處理業務時,應該知道自己什麼時候應該真正的暫停。例如一個視訊播放器,如果進入了分屏模式,就不應該在onPaused()回調中暫停視訊播放,而應該在onStop()回調中才暫停視訊,然後在onStart回調中恢複視訊播放。
(3)注意:
如果沒有适配到Android N,且沒有設定僅允許Activity豎屏/橫屏,即未設定android:screenOrientation=”XXX”屬性時,運作在Android N系統的裝置上仍然支援分屏:
manifest中未設定android:screenOrientation屬性:
builde.gradle中targetSDKVersion,compileSDKVersion都小于Android N:
此時支援分屏:
但是這時候系統不保證運作時的穩定性,在進行分屏/全屏切換時,會有風險提示:
三、分屏适配:
inMultiWindow():傳回值為boolean,調用此方法可以知道App是否處于分屏模式。
onMultiWindowChanged(boolean inMultiWindow):當Activity進入或者退出分屏模式時,系統會回調這個方法來通知開發者。回調的參數inMultiWindow為boolean類型,如果inMultiWindow為true,表示Activity進入分屏模式;如果inMultiWindow為false,表示退出分屏模式。