Android Q Labs| 折叠屏设备适配

从去年的下半年开始,咱们看到Android的设备制造商们又打造出了一个新的类别:折叠屏手机。这种设备的屏幕利用了全新的柔性屏技术,能够真正的实现弯曲和折叠。chrome

可折叠屏设备现状

简单的来讲咱们能够根据在折叠状态下柔性屏所处的位置,将目前市面上的折叠屏手机分为两大类别。安全

折叠手机分类

Fold in

首先是Fold in。app

就是在折叠的时候,它的柔性屏是处于折叠的内部的,咱们看到屏幕上的第一个图片,仔细看的话是在它的折叠的里面是能看到有显示的内容的。这种设备当它在折叠以后,它的外部是有一块额外的非柔性屏幕,这个屏幕就很适合用户作一些比较简单的,须要快速响应的操做。布局

Fold out

第二个类别叫Fold out。post

当他在折叠的时候,它的柔性屏仍是在折叠的外部的,它在折叠状态下,柔性屏是只有其中部分区域是继续使用的,它的部分区域也能够把它当成一个普通的折普通的显示屏来使用。 测试

在去年11月份,咱们举办了每一年一度的 Android 开发者峰会,在开发者峰会上咱们就宣布了 Android 系统会对折叠屏设备提供原生支持。这也就意味着若是你在开发应用的时候,遵循了咱们推荐的最佳实践作法去实现你的应用,那么你的应用不须要作任何更改就能在这些新型的设备上运行起来。网站

咱们这里所指的最佳实践就包括有说你的 Activity 是否可以根据当前屏幕大小去本身调整本身的大小,以及是否正确地处理了配置变化,还有当配置发生变化的时候,你是否能保存并恢复到用户以前所在的状态等等。 google

在这些新的折叠屏手机上,若是你想达到良好,甚至是极佳的用户体验,在设计和实现的时候,就有一些须要特别关注的地方。

使用折叠屏手机的体验

  1. 首先是在折叠屏手机被折叠的状况下,基本上你能够认为它跟一个普通的手机是差很少的使用体验,适合单手操操做适合,同时很方便你去作一些快速的响应,好比说接听电话回复消息等等。设计

  2. 当折叠屏手机展开的时候,它一般是一块有7到8英寸的大屏幕,使用起来的体验很是接近于平板设备。这么大的一块屏幕。针对于这样一个大屏幕,你的应用选择什么样的布局就很是重要,咱们鼓励开发者在这利用好这么大的一个显示区域,不要利用当中的任何一个像素。3d

  3. 在展开的柔性大屏幕上,它相对于普通的手机屏幕也更适合进行分屏展现。 在使用50:50的分屏展现的状况下,它的使用体验就相似于将两个普通的手机并列放在一块儿的展现体验。

UX 考虑

咱们看到有的折叠屏手机它能够同时支持三个应用,同时显示 Android 的开发者对于16:9和18:9的长宽比都已经很熟悉了。可是折叠屏手机的出现又带来了一些新的长屏幕长宽比。如今做为开发者也是时候去考虑一下你的应用在这些新出现的长宽比的屏幕上,它的展现效果是什么样的?新的长宽比多是21:9,甚至更高更长的瘦长形的屏幕,也多是接近长方,而接近正方形,也就是1:1长宽比的矮胖型的显示屏。 在展开状态下的折叠屏幕,咱们但愿你们能把对屏幕的使用用到极致。

固然咱们也知道在某些特殊的状况下,做为应用的开发者,你可能须要去设置应用所能够支持的最大最小长宽比。那么在这种时候,你可使用从 Android 8.0引入的 maxAspectRatio 去设置最大可支持长宽比。 也可使用咱们在AndroidQ上新加入的minAspectRatio去设置你所能支持的最小长宽比。

咱们不只是对开发者有一些要求,咱们对于生产折叠屏设备的 OEM 也有一些明确的要求。 咱们但愿 OEM 能够保证在不一样的设备,应用程序都能有足够的空间容纳底部导航栏中最多同时有五个图标同时显示,以及能有一个温馨的键盘输入区域。具体来讲就是咱们要求oem保证设备的最小触摸目标大小是两英寸。

应用联系性

什么是应用连续性呢?在可折叠设备上,当用户折叠或展开折叠屏幕的时候,应用就会被从一个屏幕自动切换到另外一个屏幕上去展现。在切换发生的时候,系统会向应用发送 ConfigurationChange。 为了不你的用户的体验由于应用屏幕的切换而受到影响,但愿开发者能确保你的应用可以妥善的处理运行时的配置变动。

具体来讲就是你须要特别去关注如下几个方面:

首先是为你的应用选择合适的布局

第二是要注意到要注意能恢复到以前用户所在的位置。好比说在切换前你的界面上它是带有滚动条的,那么在屏幕切换以后,刚刚用户滚动到哪里,你的应用最好还能保证滚动条处于切换前的同一个位置。

Multi-window

关于 resizeableActivity 属性,它是从 Android 7.0伴随着 multi—window 一块儿引入的。开发者能够在应用的 manifast 文件里面为 activity 和application 去设置属性。

这个属性代表的是 activity 和 application 是否可以启用或者禁用多窗口显示?若是这个属性的值设置为 true,表示 activity 可以以分屏和自由形状模式启动,若是属性设置为 false,并非说你的 activity 就绝对不会被调整大小,实际上它表示的是 activity 它不能支持多窗口模式。若是这个值被设置为 false,且用户尝试在多窗口模式下去启动,那么 activity 就会被以全屏方式展现给用户,

对于那些既不能支持 multi-window,也不能支持屏幕旋转的应用,咱们会经过兼容模式来进行展现。这里的兼容模式指的是将应用作拉伸以后,全部应用覆盖不到的区域会使用黑色部分填充,这种模式也叫作 black box 模式。

为了应用能有更好的用户体验,咱们固然不但愿开发者的应用被使用 black box 模式进行展现。咱们建议开发者将 resizeableActivity 属性来设置为 true,并选择合适的应用布局,从而来在多窗口模式下有一个比较好的用户体验。

在折叠屏手机出现之前,其实 Multi-Window 的概念就已经被引入了。其中有一个如今的用户比较熟悉的情况,就是在手机上的分屏显示。若是你的设备是一个 O 或者 P 的设备的话,你相信你应该早已在你的设备上尝试过这种分屏模式。

在Android以前,虽然屏幕上可能同时会有多个 activity 显示,可是同一时间最多只可能会有一个 resume 状态。若是当前界面当前屏幕上有多个 activity 显示,那么实际上只有其中具备焦点的 activity,他才处于 resume 模式,而其余的应用虽然可见,但实际他们的状态都是属于处于 PAUSED 状态。虽然咱们在开发者网站上的多窗口支持的文章里提供了处理同屏多应用的实现方法,可是咱们发现绝大多数的应用开发者并无根据咱们的最佳实践推荐的方法来处理 onPAUSED 状态。

当多个应用程序都处于 resume 这种状态的时候,很明显对于一些系统的独占性资源,好比说摄像头和麦克风确定不可能这多个应用均可以去同时访问,那么其中的一些应用程序就会失去对这些独占性系统资源的使用权。应用能够经过可用性变化的回调来处理这种状况。这里以摄像头为例。
咱们还在 Android 里面为 Activity 添加了一个新的状态叫 topResumed。由于咱们刚刚提到在 Q 以前的系统版本上,同一时间只会有一个 activity 处于 resume 这种状态。因此在 Q 上新增的 topResumed 这种状态下你能够认为它基本上是等同于在 Q 以前的版本上的 resume 状态的。
随着 multi-window的状况愈来愈常见,咱们发如今以前的系统版本上一些不太可能出现的操做如今也变得可能了,好比说以前在手机操做上,一般不会有用户须要将一段文字或者是一个图片从一个应用里拖放到另外一个应用里的状况。可是随着多窗口状态的出现,极可能用户就会有这种需求。若是你的应用恰巧是一个有可能出现这种用户场景的应用,那么咱们建议你如今就应该可去考虑是否对你的应用增长对文本和图片的拖放处理。
咱们具体来看一下 Activity 的切换。实际上有不少种方式能够把一个 Activity 从一个显示屏切换到另外一个显示屏。以折叠手机为例来讲,就是当用户折叠或者展开手机设备的时候,Activity 就可能在屏幕之间发生移动。在全部的安卓平台版本上,从启动器或者系统均可以按期启动,在辅助屏幕上建立一个新的 Activity 实例,或者他也能够从一个显示器中被移动到另一个显示器中,这个行为是取决于在你的应用的安卓 menifast 里面定义的 Activity 的 launch mod 以及启动 Activity 的调用者设置的英特的标志和选项。

当 Activity 被移动到不一样的显示设备的时候,你须要记住如下三种变动可能会发生。

在大多数状况下,开发者都会有预期说不一样的显示器他们会有不一样的尺寸密度和分辨率,那么这也意味着若是你的应用声明了他能够去处理运行时的配置变动,他就要可以对这些可能不一样的配置都要去进行处理。
若是你声明你的 Activity 它的启动模式能够支持多个实例并存,那么当它在辅助屏幕上启动的时候,就会建立一个新的 Activity 体实例。这里演示的是调用者请求在第二个显示器,也就是手机链接的外置显示屏上使用 new task 和 multitask 这两个标志去启动一个新的 Activity,这里就会建立一个新的 chrome 窗口。
咱们但愿应用开发者可以去检查你的应用是否能支持这种多实力的情况,若是你肯定能够支持,那么你还须要去考虑使用具备多个 view model 的共享数据源。 Multi-resume 就也适用于多屏幕的这个场景,而且多个 Activity 可能同时能够接受用户输入,你须要注意的一点是,即便在之前的平台版本当中处于未聚焦状态,Activity 可能能够接受输入。好比说当用户尝试同时在分屏模式中与两个应用进行交互的时候,就会发生这种情况。

若是你的应用但愿去显示链接到当前的系统的额外的显示屏幕怎么办?第一部是经过使用 DisplayManager 去检查当前链接到当前系统中的全部显示内容。不一样的显示器可能会具备不一样的特征,你能够去调用接口去检查每个显示设备的指标信息标志还有状态,并确认你是否须要去使用这些显示设备。

好比说当你但愿去展现一个高清的照片的话,你就能够先作一个过滤,去挑选出那些屏幕尺寸比较大,resolution 比较高的那些屏幕来展现这个图片。固然还有一种状况就是你能够去判断当前的这些连上的显示设备是否关掉,由于关掉的状况下对你来讲没有什么价值,因此你能够直接将他们过滤掉。

有的时候系统会限制某些屏幕上 Activity 被启动,这种状况下,若是你在这些设备上去启动 Activity 就会抛出一个 security assumption。在 Android Q 上咱们还添加了一个新的 API 来检查当前的安全限制,是说这个屏幕是否容许调用者在它上面去启动一个 Activity 固然你也可使用 Android O当中添加的 Activity option 在你所想要的显示设备上去启动你的 Activity。
在Android Q 上软件键盘窗口能够被显示,也能够被移动到辅助显示器当中。可是同一时 间系统仍然是只能有一个软件键盘窗口。在这个软件键盘窗口被移动到不一样的显示器上的时候,处理方式与显示尺寸变动,好比说屏幕旋转的状况下的处理方式是相似的,系统会向键盘进程发送显示配置更改信息,而且在运行时更新上下文和可用资源。
从Android Q 开始辅助屏幕上也能够去支持桌面壁纸了!Android frame work 会为每个显示屏建立一个单独的 WallpapeSrurvive.Engine 实例,而且会保证每一个引擎的是表面都是独立绘制的。
若是你是一个壁纸的开发人员,你须要确保你使用正确的 display contacts 去加载资源,你还能够在 wallpaper info 的 xml 定义中去声明对多显示设备的支持。对于 Android Q 当中的启动器,咱们为他在 intent 的过滤器添加一个新的类别,以便为辅助屏幕提供专用的 Activity,这个专用 Activity 的实例将用于支持 system decoration 的全部显示器,每一个显示器都具备单独的一个。这个 Activity 必须具备支持多个实例的启动模式,并且须要能够适用不一样适应不一样的屏幕大小,用户能够去自主的设置他们。

Multi-display

在 AOSP 当中的 launchers 这个类就实现了专有 Activity 类别。那么咱们在 AOSP 当中还有一个 multi-display 的启动器事例,展现了如何去使用新的功能。

如何测试

咱们也知道对于开发者来讲,在如今你想拥有一个真实的折叠屏手机设备去测试你的应用的表现仍是挺难的。咱们在 Android studio 当中也提供了一些方案,帮你们去处理这种状况。

若是你如今有 Android studio3.5,你能够在 AVD 当中去看到,咱们如今提供了7.3英寸和八英寸的折叠屏设备的模拟器,若是从此咱们看到有其余尺寸的折叠屏手机上市,咱们也会在 AVD 里面增长相应的模拟器尺寸的选项。
经过这些模拟器,你如今就能够当即开始测试你的应用,在这些最新的折叠屏手机上的用户体验,你甚至能够去模拟折叠屏手机被折叠和打开的状况来测试你的应用程序的连续性。若是你的应用他声明了本身所能支持的最大或者最小长宽比,你如今还能够经过模拟器去看到在 lock box 模式下你的应用的呈现效果。固然你也能够经过模拟器去测试 multi-resume 这种状态下你的应用程序的表现。
为了帮助开发者可以在真实的设备上去测试 multi-display 的展现效果,在 Android Q 中咱们还增添了一个新的开发者选项,叫强制使用桌面模式。 在这个选项被开启以后,它会在全部的辅助屏幕上显示 system decoration,好比说是系统顶部的状态栏和底部的虚拟导航栏,而且会在辅助显示屏幕上显示主鼠标指针。经过与启用可自由调整的可自由调整的窗口,这个选项的结合,它能够建立出相似于桌面的窗口体验。这两个开发者选项的变动一般是须要从新启动手机设备才会生效的。

开发者文档

咱们还在开发者网站上有一个很是详细的教程来跟你们介绍,如何去适配这些折叠屏手机设备。你们能够经过扫描如今屏幕上的二维码去阅读教程,那么咱们也但愿你们可以尽快的实现你的应用与这些折叠屏手机的适配工做。

点击:开发者文档

Android Q Labs 直播专题页面

Android Q Labs 开场演讲

Android Q 有哪些更新

Android Q 现代化您的应用

后台 Activity 启动的限制

Android Q 分区存储

Android Q 手势导航

Jetpack 更新

通用系统映像介绍

Google Play 商店政策

Android Q 地理位置权限变动

Android Q 深色主题

Android Q Labs 总结演讲

相关文章
相关标签/搜索