天天看點

android7.0分屏适配

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

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()

android7.0分屏适配

(2)從分屏頁到自己的應用:分屏時長按多任務鍵,全屏顯示自己的應用

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

android7.0分屏适配

在分屏模式中,由于一個App可以在對使用者可見的狀态下進入paused狀态,是以在處理業務時,應該知道自己什麼時候應該真正的暫停。例如一個視訊播放器,如果進入了分屏模式,就不應該在onPaused()回調中暫停視訊播放,而應該在onStop()回調中才暫停視訊,然後在onStart回調中恢複視訊播放。

(3)注意:

如果沒有适配到Android N,且沒有設定僅允許Activity豎屏/橫屏,即未設定android:screenOrientation=”XXX”屬性時,運作在Android N系統的裝置上仍然支援分屏:

manifest中未設定android:screenOrientation屬性:

android7.0分屏适配

builde.gradle中targetSDKVersion,compileSDKVersion都小于Android N:

android7.0分屏适配

此時支援分屏:

android7.0分屏适配

但是這時候系統不保證運作時的穩定性,在進行分屏/全屏切換時,會有風險提示:

android7.0分屏适配
android7.0分屏适配

三、分屏适配:

inMultiWindow():傳回值為boolean,調用此方法可以知道App是否處于分屏模式。

onMultiWindowChanged(boolean inMultiWindow):當Activity進入或者退出分屏模式時,系統會回調這個方法來通知開發者。回調的參數inMultiWindow為boolean類型,如果inMultiWindow為true,表示Activity進入分屏模式;如果inMultiWindow為false,表示退出分屏模式。

繼續閱讀