日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android N 多窗口模式,你需要知道的一切

發布時間:2025/3/15 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android N 多窗口模式,你需要知道的一切 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


Android N中最大、最引人注意的變化就是Mutil-window模式。對于一個開發者,我們最關心的就是:Mutil-window模式下怎么配置mutil-window模式、Activity的生命周期的變化、提供了什么API。

讓你的應用支持 Mutil-window 模式

  • 首先先將設置編譯時的sdk和工具版本。具體見下圖.

  • 接下來就是對 Activity 的配置了,你可以在 AndroidManifest 中設置activity是否在 mutil-window 模式下顯示,以及顯示的樣式(大小和布局)。同一個task中的所有activity的樣式取決棧底的activity的樣式。
    決定是否在 mutil-window 下顯示的代碼很簡單、只要在或者節點下設置android:resizeableActivity屬性就行了。

  • <applicationandroid:resizeableActivity="true"><activity android:name=".MainActivity"><layoutandroid:defaultHeight="500dp"android:defaultWidth="300dp"android:gravity="top|end"android:minimalSize="200dp" /><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>

    實際操作過程中,發現在 Mutil-window模式下設置 在 中設置 元素是無效的,比如 defaultHeight、defaultWidth.可能 元素只在畫中畫(pictures-in-picture)模式中有效。

    注意:如果使用低于Android N的sdk編譯的app,并且他沒有限定orientation,在mutil-window模式下,他會自動拉伸兼容,不需要額外地配置字段。但是會有可能不兼容的警告。但是如果是一個限定了orientation為 portrait 或 landscape的app,Android N不會拉伸它,它會直接占滿整個屏幕.

    Multi-window生命周期

    Multi-window生命周期不會改變Activity生命周期。在Multi-window的模式下,只有用戶最近使用的那個Activity會處于激活狀態。這個Activity會被認為是最頂層的,其他的activity都會處于pause狀態,即使他們是可見的。然而,Android系統會給這些pause但是可見的activity更高的優先級。如果用戶跟某個pause的Activity交互,那么Activity就會resumed,前一個頂層的Activity會被pause。

    注意:在 multi-windo 模式,一個App可以處于pause狀態但是依然對用戶可見。一個App可能需要運行他的activity即使它處于pause狀態.比如,一個視屏播放軟件,他已經處于暫停狀態,但是依然對用戶可見需要繼續播放他的視頻。因此,我們建議Activity不要在onPause()的時候暫停視頻播放,而應該在onStop()中,在onStart()中恢復播放。

    當用戶將一個App置于 mutil-window 模式,系統將會通知 Activity 配置變更,作為運行時的變更。特別是這個改變就像系統切換豎屏和橫屏一樣。對于處理運行時的配置變化,你的 Activity 可以在對應的配置變更回調(比如 onMultiWindowChanged() 中處理,或者讓系統自動處理它的銷毀和重新創建。

    接下來我們在具體的 Activity 生命周期回調函數中輸出log,看看 mutil-window 模式下生命周期

    從全屏到 mutil-window 模式

    mutil-window 模式到全屏模式
    這里可以看見當從mutil-window模式到全屏模式的時候,onMultiWindowChanged()函數就被調用了。我們可以在這里處理跟顯示模式切換有關的東西。

    新的API

    這些新的API可以讓接收到 Mutil-window 狀態改變的通知,以及判斷是否處于 Mutil-window 模式。

  • Activity.inMultiWindow()
    是否處于 multi-window 模式。

  • Activity.inPictureInPicture()
    是否處于畫中畫模式.

    注意: 畫中畫模式是 Mutil-window 模式的特例. 如果 myActivity.inPictureInPicture() 返回 true, 那么myActivity.inMultiWindow() 也會返回 true.

  • Activity.onMultiWindowChanged(boolean inMultiWindow)
    系統會在activity進入或者退出 mutil-window 模式回調這個方法。它會傳遞一個值指示activity是否進入 mutil-window 模式,true 代表正在進入 mutil-window 模式,false 代表正在退出。
  • Activity.onPictureInPictureChanged(boolean inPictureInPicture)
    系統會在activity進入或者退出 畫中畫 模式回調這個方法。它會傳遞一個值指示activity是否進入畫中畫模式,true 代表正在進入畫中畫模式,false 代表正在退出。

  • Fragment也有對應的方法,比如說Fragment.inMultiWindow()

    感想

  • 我覺得這是Android N絕對殺手級的feature,想想能邊看電影邊微信就覺得很滿足。
  • Android 平板之前一直被詬病沒有多少適合的App,這下可好了,直接分屏使用,爽爆炸。特別Google對Pixel C還有25%的優惠。
  • 總結

    以上是生活随笔為你收集整理的Android N 多窗口模式,你需要知道的一切的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。