查看原文
其他

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

码仔 开发者技术前线 2019-05-23
点击上方“开发者技术前线”,选择“星标”

周末 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 网下载地址:https://developer.android.google.cn/studio/install


2、创建虚拟机



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



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



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



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



6、运行AVD



7、下载折叠屏模拟器 : FoldableEmulator_1.01.apk ,可进入下面的网页进行下载 : https://developer.samsung.com/galaxy/foldable/test


8、安装折叠屏模拟器APK


9、授予权限



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


10、仿真使用



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


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

END


喜欢就点个好看吧!
Modified on

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存