美文网首页
Android7.0分屏适配介绍

Android7.0分屏适配介绍

作者: 凌峦 | 来源:发表于2019-09-25 14:01 被阅读0次

本文章抄送Androiddeveloper网站,目的是为方便学习记录。

切换到多窗口模式方式

- 若用户打开OverView屏幕并长按Activity标题,则可以拖动该Activity至屏幕突出显示的区域,使Activity进入多窗口模式。

- 若用户长按Overview按钮,设备上的当前Activity将进入多窗口模式,同时将打开Overview屏幕,用户可在该屏幕中选择要共享屏幕的另一个Activity。

多窗口生命周期

多窗口模式不会更改Activity生命周期。

在多窗口模式中,在指定时间只有最近与用户交互过的Activity为活动状态。该Activity将被视为顶级Activity。所有其他Activity虽然可见。但均处于暂停状态。但是,这些已经暂停但可见的Activity在系统中享有比不可见Activity更高优先级。如果用户与其中一个暂停的Activity交互,改Activity将恢复,而之前的顶级Activity将暂停。

> 注:在多窗口模式中,用户仍可以看到处于暂停状态的应用,。应用在暂停状态下可能仍需要继续其操作。例如:处于暂停模式但可见的视屏播放应用继续显示视频。因此,我们建议播放视频的Activity不要暂停其onPauser()处理程序中的视频。应暂停onStop()中的视频,并恢复onStart()中的视频播放。

如处理运行时变更中所述,用户使用多窗口模式显示应用时,系统将通知Activity发生配置变更。这也会发生在当用户调整应用大小,或将应用恢复到全屏幕模式。该变更与系统通知应用设备从纵向模式切换到横向模式时 的Activity生命周期影响基本相同,但设备不仅仅是交换尺寸,而是会变更尺寸。如处理运行时变更中所述,您的Activity可以自行处理配置变更,或许系统销毁Activity,并以新的尺寸重新创建改Activity。

如果用户调整窗口大小,并在任意纬度放大窗口尺寸,系统将调整Activity以匹配用户操作,同时根据需要发布运行时变更。如果应用在心公开区域的回执滞后,系统将使用windowBackground属性或默认windowBackground样式属性指定的颜色暂时填充该区域。

针对多窗口模式配置应用

如果您的应用面向Android N,您可以对应用的Activity是否支持多窗口显示以及显示的方式进行配置。您可以在清单文件中设置属性,以控制大小和布局。根据Activity的属性设置适用于其他任务栈中所有Activity。例如,如果根据Activity已android.resizeableActivity设定为true,则任务栈中所有的Activity都将调整大小。

> 注:如果您使用低于Android N版本的SDK构建应用,则用户再多窗口模式中适用应用时,系统将强制调整应用的大小。系统将显示对话框,提示用户应用可能会发生异常。系统将不会调整定向应用的大小;如果用户尝试再多窗口模式下打开定向应用,应用将全屏显示。

android.resizeableActivity

在清单的<activity>或<application>节点中设置该属性,启用或禁用多窗口显示:

    android:resizeableActivity=["true" | "false"]

 布局属性 

对于Android N,<layout>清单元素支持一下几种属性,这些属性影响Activity在多窗口模式中的行为:

android:defaultWidth //以自由形状模式启动时Activity的默认高度

android:defaultHeight // 以自由形式模式启动时Activity的默认高度

android:gravity // 以自由形状模式启动时Activity的初始位置。

android:minimalHeight、android:minimalWidth // 分屏和自由形状模式中Activity的最小高度和最小宽度。

 再多窗口模式中运行应用

Android N添加了新功能,以支持可在多窗口模式中运行应用。

多窗口模式中被禁用的功能

在设备处于多窗口模式中时,某些功能会被禁用或者忽略,因为这些功能对于其他Activity或者应用共享屏幕的Activity而言没有意义。此功能包括:

- 某些系统UI自定义选项将被禁用;例如,在非全屏模式中,应用将无法隐藏状态栏。

- 系统将忽略对 android:screenOrientation属性所作用的更改。

多窗口变更通知和查询 

Activity类中添加一下新方法,以支持多窗口显示。有关方法详细信息,请阅读NPreview SDK参考

Activity.isInMultiWindowMode() // 调用该方法以确认Activity是否处于多窗口模式。

Activity.isInPictureInPictureMode() // 调用该方法以确认Activity是否处于画中画模式。

> 注:画中画模式是多窗口模式的特列。如果myActivity.isInPictureInPictureMode()返回true,则myActivity.isInMultiWindowMode()也返回true。

Activity.onMultWondowModeChanged() // Activity进入或退出多窗口模式时系统将调用此方法。在Activity进入多窗口模式时,系统向该方法传递true值,退出多窗口模式时,则传递false值。

Activity.onPictureInPictureModeChanged() // Activity进入或退出画中画模式时系统将调用该方法。在Activity进入画中画模式时,系统向该方法传递true值,退出画中画模式时,则传递false值。

进入画中画模式 

如需要在画中画模式中启动Activity,请调用新方法Activity.enterPictureInPictureMode()。如果设备不支持画中画模式,则此方法无效。

在多窗口模式中启动新的Activity 

在启动新Activity时,用户可以提示系统如果可能,应将新的Activity显示在当前Activity旁边。要执行此操作,可以使用标志`Intent.FLAG_ACTIVITY_TO_ADJACENT`。传递此标志将请求一下行为:

- 如果设备处于分屏状态,系统会尝试在启动系统的Activity旁边创建新的Activity,这样两个Activity将共享屏幕。系统并不一定实现此操作。但如果可以,系统将使两个Activity处于相邻的位置。

- 如果设备不处于分屏状态,侧设置将无效。

如果设备处于自由形状模式,在启动新Activity时,用户可以调用ActivityOptions.setLaunchBounds()指定新Activity的尺寸和位置,如果设备不处于多窗口模式,则该方法无效。

>注:如果您在任务栈中启动Activity,改Activity将替换屏幕上的Activity,并继承其所有的多窗口属性。如果要在多窗口模式中以单独的窗口启动新的Activity,则必须在新的任务栈启动此Activity。

相关文章

  • Android7.0分屏适配介绍

    本文章抄送Androiddeveloper网站,目的是为方便学习记录。 切换到多窗口模式方式 - 若用户打开Ove...

  • 图片处理工具

    Android7.0 完美适配——FileProvider 拍照裁剪全解析 适配 android7.0 中的拍照相...

  • android7.0分屏适配

    版权声明:本文为原创文章,未经允许不得转载! 博客地址:https://blog.csdn.net/susan_1...

  • Android的分屏模式开发注意事项

    android7.0 的API开始有了分屏功能,在测试时注意到主页面在分屏模式下,页面所占比例在增大或者减小的时候...

  • Android7.0的适配

    关于Android7.0的适配 最近在软件的维护和更新过程中,了解到一些关于Android7.0的适配,在这里和大...

  • Appium适应Android7.0

    Appium适配Android7.0以上版本 测试机型: 华为荣耀V9 安卓版本: Android7.0 appi...

  • Android WebView 调用系统拍照和相册

    由于本应用版本较低 未写Android7.0以上权限适配和文件读取适配; mWebView.setWebViewC...

  • Android7.0

    详解7.0带来的新工具类:DiffUtil Android7.0适配心得

  • Android 7.0权限的适配

    公司的需求,做了一下android7.0适配,适配7.0主要就是对手机本地文件的Uri做转换处理。7.0的适配,就...

  • Android7.0 分屏 Activity 与 Fragmen

    小菜前段时间整理过一些关于 Activity 与 Fragment 生命周期的小博文:Android7.0 分屏下...

网友评论

      本文标题:Android7.0分屏适配介绍

      本文链接:https://www.haomeiwen.com/subject/aivyoqtx.html