华为折叠屏来了,你的 APP 适配了吗?

android studio 相关说明 | 2019-03-10 13:27

周末 10.00 打卡 真爱

来自: 码个蛋 |  责编: 可可

相信大家这两天已经被三星和华为的折叠屏手机给刷爆朋友圈了。

三星Galaxy Fold  售价1980美元,约合人民币13376元

HUAWEI Mate X  售价2299欧元,相当于人民币1.75万元

朋友圈发关于折叠屏的消息主要分这两种。

普通人:哇!折叠屏,屏幕变大了,看电影打游戏肯定更爽了,不过这玩意肯定不抗摔吧,换个屏得多少钱!

程序员:卧槽!异形屏还没适配完呢,这尼玛还得适配!我不做前端了。

别担心,今天就带你来详细剖析一下折叠屏!

如何适配折叠屏

折叠屏在视觉效果来说就是,屏幕变大了,手机变平板了。这样就要求我们的APP在可折叠设备展开时,当前应用页面必须无缝延续到另一个屏幕,并可自动调整大小匹配新的布局,反之亦然。也就是说,应用程序需要准备好在多个屏幕(不同分辨率、密度等)之间切换。

其实Google之前有其应对的策略,在去年的 Android Dev Summit 上,Google 就已经宣布将要对折叠屏提供“Screen Continuity(屏幕连续性)”的原生系统支持,并将这项技术称之为:Foldables。利用这种柔性显示技术,App 可以做到折叠屏设备上的适配工作。

下面我们来看如何实现这种技术:

运行时配置变更 – 系统默认

折叠/展开的操作过程将触发系统向应用发送新布局的配置更改,包括smallestScreenSize, screenSize 和 screenLayout 的配置

每当发生配置更改时,Android 默认情况下会重启正在运行的 Activity(先后调用onDestroy()和 onCreate())。目的是使用与新设备匹配的备用资源自动重新加载您的应用。

当 Activity 重启时,恢复之前的状态很重要。在销毁 Activity 之前,可以调用onSaveInstanceState()来保存应用状态的数据;之后在 onCreate()或onRestoreInstanceState()中恢复 Activity 状态。

不要在活动的 OnDestroy()中调用 finish()或自行终止进程,否则将导致 APP 在设备折叠或展开时关闭。

运行时配置变更 – 自行处理

如果因性能限制等因素希望在不自动重启 Activity 的情况下处理配置更改,您需要在应用清单 manifest 中增加 android:configChanges 属性,并至少包含以下配置值:

当指定的属性(可折叠设备的折叠/展开时触发)发生变化时,MyActivity 不会重启 , 而是会收到对 onConfigurationChanged()的调用,在此方法中处理配置变更,更新视图布局、重新加载资源。通过此方法即能实现在系统不重启 Activity 的情况下重置 UI。

总的来说,折叠屏的适配有点类似平板+旋转屏的综合体,也需要配置文件+多布局。

如何模拟折叠屏

上面我们已经讲了如何适配折叠屏,这时候肯定有同学要说了:适配毛线啊,一个手机1W7,小公司会给配测试机?自己买得起?所以还是不要适配了!

作为一个有梦想的开发者,能被这点困难打到吗?

买不起我们还没发用虚拟机么,接下来码仔带大家一步一步实现折叠屏虚拟机的创建。

1、进入 Android Studio-> AVD Manager(Android Studio 可在 Google 网下载地址: )

2、创建虚拟机

3、选择设备 : 平板电脑> Nexus 10

4、选择系统镜像 : 可选择 Android9.0 开源项目镜像(可下载)

或者选择 Android 9.0 Google 镜像(可下载)

5、配置方法 : 选择 Portrait,其他使用默认值

6、运行AVD

7、下载折叠屏模拟器 : FoldableEmulator_1.01.apk ,可进入下面的网页进行下载 :

8、安装折叠屏模拟器APK

9、授予权限

“SYSTEM_ALERT_WINDOW”权限也可以在 activity 中授予,在应用程序启动时显示,无需使用上述命令授予。

10、仿真使用

OK,到这里已经把折叠屏的适配和模拟器的使用介绍给大家了,大家还不赶紧去搞一波?

Android开发异形屏 刘海屏,还没适配完呢,这尼玛还得适配!  系统新特性 ,大厂各种框架,google各种出新技术,这届安卓程序员真心苦啊