Android N Preview 开发介绍(1)

Android N Preview 开发介绍(1)_第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开发环境配置

Android N Preview 开发介绍(1)_第2张图片
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里新增如下属性:
    


提供的属性

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.jianshu.com/p/d6f9d2ee64a2,欢迎关注我的微博

你可能感兴趣的:(Android N Preview 开发介绍(1))