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

原始地址: //www.greatytc.com/p/d6f9d2ee64a2,欢迎关注我的微博

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,900评论 25 709
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,737评论 2 45
  • 跨过江 跨过河 跨过湖 跨过海 跨过千年的轮回 来人间走此一遭 一路风雨 一路兼程 不为风花 不为雪月 只为寻找千...
    翦梦阅读 1,735评论 30 49
  • 作者说:“小说要结局了,有些小虐。”我的心微微一震,想着素玄欲言又止,估计大概楚非欢要死了吧。这样或许秦长歌与萧玦...
    何索清欢阅读 5,390评论 0 3
  • 多年来有人一直在研究: 为什么女人节是“三八”, 而不是“三七”或“三九”?细思恐极: 三七是中药,三九是西药,这...
    管文宁阅读 3,868评论 0 0