Android N Preview 開發介紹(1)

Photo from Android.png

2016年3月9號,Android N Preview1發布,帶來了一些新的特性,關于特性的介紹有很多資料,我在這里就不詳細展開了,可以看Android N介紹視頻,其中的Multi-window support和Notifications對之后Android App的設計和開發會帶來一些新的嘗試,雖然Android N正式發布還需要一段時間,但我們作為Android開發人員也需要提前進行了解,今天就在這里給大家介紹下。

Android N Preview開發環境配置

Develop with Android N Preview.png

Tip:在配置過程中其他都還好,就是將Java7替換到Java8中的時候,發現配置完成Android Studio仍然報錯,最后將Java7刪除,重啟Android Studio解決,可能是Android Studio 2.1的bug。

Multi-window support

背景

多屏分任務的支持,其實這在之前三星平板和Note手機中就已經支持了,不算什么高大上的特性,但Android原生系統支持還是第一次,隨著手機屏幕不斷擴大,分屏帶來效率的提升,也使得這一特性變得讓人很期待。

開發

  1. 配置App Multi-Window模式
    在AndroidManifest里新增如下屬性:
<activity     
    android:name=".YourActivity"    
    android:launchMode="singleInstance"    
    android:taskAffinity="">    
<layout        
    android:defaultHeight="500dp"        
    android:defaultWidth="750dp"        
    android:gravity="top|end"        
    android:minimalSize="500dp" />
</activity>
提供的屬性

android:resizeableActivity=["true" | "false"]
如果設置為true,則該Activity可以在分屏和自由模式(freeform mode)中打開,否則就不能打開,該值默認為true。
android:supportsPictureInPicture=["true" | "false"]
如果設置為true,則該Activity可以在PIP模式中打開,如果android:resizeableActivity=false,則忽略該屬性,意思就是哪怕android:supportsPictureInPicture=true,也是無效的。關于PIP模式,在下面會提到。
android:defaultHeight
在自由模式中打開的默認高度
android:defaultWidth
在自由模式中打開的默認寬度
android:gravity
在自由模式中打開的位置
android:minimalSize
在自由模式中打開的最小寬高

提供的方法

Activity.inMultiWindow()
判斷該Activity是否支持multi-window模式
Activity.inPictureInPicture()
判斷該Activity是否支持picture-in-picture模式,可以認為,Activity.inPictureInPicture()返回true,則Activity.inMultiWindow()也會返回true
Activity.onMultiWindowChanged(boolean inMultiWindow)
如果該Activity進入或者退出multi-window模式,該方法就會被回調,如果進入,則inMultiWindow=true,否則inMultiWindow=false
Activity.onPictureInPictureChanged(boolean inPictureInPicture)
如果該Activity進入或者退出picture-in-picture模式,該方法就會被回調,如果進入,則inPictureInPicture=true,否則inPictureInPicture=false

Picture-in-picture

背景

Picture-in-picture(PIP)模式可以在固定窗口里運行一個視屏Activity,讓用戶處理多線程,提高效率。

開發

  1. 配置Picture-in-picture模式
    在AndroidManifest里新增如下屬性:
android:supportsPictureInPicture="true"
  1. 切換你的Activity到PIP模式
Activity.enterPictureInPicture()
  1. 在PIP模式里對UI的處理
    當該Activity進入PIP模式時,可以移除不必要的UI組件,只顯示視屏
@Override
public void onPictureInPictureChanged(boolean inPictureInPicture) {
    if (inPictureInPicture) {
        // 在進入PIP模式后進行隱藏處理
        ...
    } else {
        // 在退出PIP模式后進行恢復處理
        ...
    }
}
  1. 在PIP模式中繼續進行視屏播放
    進入PIP模式時,系統會認為該Activity處于paused狀態,一般而言,在paused狀態會暫停視屏的播放,這里就需要PIP模式進行區分處理,在PIP模式中繼續播放。
@Override
public void onPause() {
    if (inPictureInPicture()) {
        ...
    }
    ...
}

參考

multi-window
picture-in-picture
Set Up the Preview

原始地址: http://www.lxweimin.com/p/d6f9d2ee64a2,歡迎關注我的微博

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

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,269評論 25 708
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,527評論 2 45
  • 跨過江 跨過河 跨過湖 跨過海 跨過千年的輪回 來人間走此一遭 一路風雨 一路兼程 不為風花 不為雪月 只為尋找千...
    翦夢閱讀 259評論 30 49
  • 作者說:“小說要結局了,有些小虐?!蔽业男奈⑽⒁徽?,想著素玄欲言又止,估計大概楚非歡要死了吧。這樣或許秦長歌與蕭玦...
    何索清歡閱讀 1,535評論 0 3
  • 多年來有人一直在研究: 為什么女人節是“三八”, 而不是“三七”或“三九”?細思恐極: 三七是中藥,三九是西藥,這...
    管文寧閱讀 668評論 0 0