Android-7分屏體驗,代碼上手初見

Android-7(API24)前幾天風風火火發布,小的里面下載最新的體驗一把,當然是模擬器了,說實話然并卵。下面是小的錄的gif先睹為快吧。

體驗

實現

實現分屏,還是蠻簡單的,代碼層,當然底層實現暫未研究,不過真心不知道在這小小的手機上分屏有什么用處,好了廢話不說了現在就是擼一把。

要實現分屏只要在AndroidManifest.xml定義一個屬性就行,默認是支持分屏的

<activity
    android:name=".MainActivity"
    // 就是他、就是他、就是他,如果不想支持給為false,默認是true
    android:resizeableActivity="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

是不是很簡單呢,是你想的簡單了,這樣變化后什么周期呢?

將Activity啟動到另外一個分屏中

// 啟動時添加Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT這個flags,就可以把Activity啟動到另一個分屏中
Intent intent = new Intent(this, AdjacentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

不支持分屏時

  1. 不支持分屏,沒有設置 Intent.FLAG_ACTIVITY_NEW_TASK直接啟動到當前分屏中
  2. 設置了 Intent.FLAG_ACTIVITY_NEW_TASK,取消分屏,全部顯示

分屏變化監聽

新的api中添加了下面的回到,通知分屏變化

// 當屏幕變化是回調
@Override
public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
    super.onMultiWindowModeChanged(isInMultiWindowMode);
    Log.i(TAG, "****** onMultiWindowModeChanged() ******");
}

生命周期變化

Activity的分屏變化還是和原來差不多,可以看成是Activity 的切換(下文log,為了好看去掉了時間)

  1. 長按菜單鍵(通常是方快建)進入分屏狀態

    com.mz.android_7.MainActivity****** onMultiWindowModeChanged() ******
    com.mz.android_7.MainActivity****** onPause() ******
    com.mz.android_7.MainActivity****** onStop() ******
    com.mz.android_7.MainActivity****** onDestroy() ******
    com.mz.android_7.MainActivity****** onCreate() ******
    com.mz.android_7.MainActivity****** onStart() ******
    com.mz.android_7.MainActivity****** onResume() ******
    com.mz.android_7.MainActivity****** onPause() ******
    // // Activity銷毀重建,此時當前Activity進入到pause狀態,不在有焦點
    
  2. 點擊當前分屏

    com.mz.android_7.MainActivity****** onResume() ******
    // 進入到resume狀態
    
  3. 點擊另一分屏

    com.mz.android_7.MainActivity****** onPause() ******
    // 再次進入到pause狀態,如果不進行其他操作,來回點擊,兩個狀態來回切換
    
  4. 退出分屏

    com.mz.android_7.MainActivity****** onPause() ******
    com.mz.android_7.MainActivity****** onStop() ******
    com.mz.android_7.MainActivity****** onDestroy() ******
    com.mz.android_7.MainActivity****** onCreate() ******
    com.mz.android_7.MainActivity****** onStart() ******
    com.mz.android_7.MainActivity****** onResume() ******
    com.mz.android_7.MainActivity****** onMultiWindowModeChanged() ******
    // Activity銷毀重建,進入resume狀態,分屏退出
    

總結

Android-7的分屏在我看來沒什么用處,但是本質是提高了用戶的體驗,當然是在運行流暢的前提下。它的本質還是同一時刻只有一個Activity處于resume狀態,所以并沒有太高深的東西,只是對于生命周期的理解要加強。

閱讀原文

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,065評論 25 708
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,509評論 0 17
  • Android開發中,大多APP可能根據實際情況直接將APP的界面方向設死了,或豎屏或橫屏。但是,我們還是會遇到橫...
    yoosir閱讀 50,438評論 7 112
  • 我一臉釋然 她以為我滿不在乎 我們走不出這怪圈子 無法靠近 緊緊擁抱沉默 明知飛蛾撲火 卻默默揮動翅膀往前飛 為你...
    友三閱讀 141評論 0 0
  • 真正的放棄 是無聲無息的 她會悄悄的把你 看在眼里爛在心里 然后在不知不覺之間 滋生一股抗拒的冷空氣 把那些所有關...
    幻夢邪魂閱讀 577評論 0 2