【移动应用开发技术】详解Android 折叠屏适配攻略_第1页
【移动应用开发技术】详解Android 折叠屏适配攻略_第2页
【移动应用开发技术】详解Android 折叠屏适配攻略_第3页
【移动应用开发技术】详解Android 折叠屏适配攻略_第4页
【移动应用开发技术】详解Android 折叠屏适配攻略_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】详解Android折叠屏适配攻略

随着三星GalaxyFold和华为MateX的发布,折叠屏手机开始进入大家的视线。在改变手机体验的同时,也给我们开发人员在适配方面带来了更多的挑战。本文给大家介绍一下Android开发中和折叠屏相关的一些概念,以及如何进行折叠屏的适配。折叠屏适配折叠屏之所以需要适配,是因为我们的应用有可能在运行的过程中,所在的屏幕尺寸发生了变化,这种情况对现有项目多少都会产生一些问题。所以折叠屏适配的本质是:当应用运行时,屏幕的尺寸、密度或比例发生了变化,应用能够继续在变化后的屏幕上正常显示和正常运行。其实这种情况并不是折叠屏出现之后才有的,应用的纵向横向切换也会发生同样的情况,只不过很多应用都强制纵向,不需要处理这种适配了。允许改变应用尺寸要适配折叠屏,首先是要让应用支持动态改变尺寸,我们需要在menifest中的Application或对应的Activity下声明:相反,如果暂时不打算适配,把这个参数设为false就好了。需要说明的是,这个参数在Android7.0或更高版本默认为true,以下则默认为false。下面介绍两个和这个参数相关的概念。分屏模式之所以从Android7.0开始,把resizeableActivity默认改为true,是因为在7.0里增加了一个新功能,叫分屏模式。.jpg如果把resizeableActivity设为false,就意味着应用是不支持分屏模式的,它决定了应用是否有分屏的设置项。.jpg兼容模式当resizeableActivity取false时,展开折叠屏可能会变成这样的效果:.jpg这个效果类似于在iPad上使用不兼容的iPhone应用,这个四周用黑色填充的模式,叫兼容模式。兼容模式的显示和最大支持比例maxAspectRatio有关,当屏幕比例超过maxAspectRatio时才会用黑边填充,官方建议把maxAspectRatio设为2.4(12:5),修改maxAspectRatio的方法如下:Android8.0或以上版本在标签中配置android:maxAspectRatio:Android8.0以下版本在标签中添加名为android.max_aspect的meta-data:如果resizeableActivity设为true,就不需要设置maxAspectRatio了,设了也不会生效。监听尺寸改变在默认情况下,当屏幕发生了变化,系统会销毁并重新创建整个Activity。但我们希望屏幕变化之后,程序能够以切换前的状态继续运行,不需要重启页面。我们可以给Activity添加配置:这样配置后,当屏幕发生变化就不会重启Activity了,会调用到onConfigurationChanged方法,我们可以在这个方法里获取到当前的屏幕信息:这样改之后需要注意测试,看看页面的布局是否发生错乱,如果布局不合理就需要修改布局以适配不同分辨率。我们也可以根据屏幕信息来更新布局,比如在大屏幕上把LinearLayout切换成GridLayout,充分利用大屏幕的显示空间,这是更进一步的优化做法了:.jpgAndroidQ在即将到来的AndroidQ上,增加了一些支持折叠屏的特性。Multi-resume对于分屏模式,过去的分屏只支持两个应用同时显示,而大屏幕带来了更多的可能性,现在已经允许两个以上的应用同时显示了。在AndroidQ之前的版本,以分屏模式运行的应用里面,只有获取到焦点的Activity会处于onResume状态,其他可见Activity都是处于onPause状态。而在AndroidQ上,所有顶层可见Activity都处于onResume状态,保证在分屏模式下的可见Activity都能正常运行。但能获取到焦点的Activity依然只有一个,我们把这个Activity叫做TopResumedActivity。在AndroidQ的Activity里增加了一个生命周期回调方法onTopResumedActivityChanged(),它会在Activity获取或失去焦点时调用,可以用来判断当前Activity是否拥有焦点:当我们使用了独占资源时就要用到这个方法。什么叫独占资源?麦克风、摄像头就是,这类资源同一时间只能给一个Activity使用。比如分屏模式下的多个Activity都使用了摄像头,但这时候只有获取到焦点的Activity拥有访问权限,这种情况下就要通过onTopResumedActivityChanged()判断当前Activity是否获取到焦点。在失去焦点的时候可以不释放摄像头,但是需要处理好摄像头断开连接和重新连接的情况。.jpgminAspectRatio在AndroidQ之前只能配置最大支持比例maxAspectRatio,现在AndroidQ可以配置最小支持比例minAspectRatio了,用法和maxAspectRatio一样:最大最小支持比例,都是在resizeableActivity取false的时候才会有用。调试最好的调试工具当然就是用真机了,但目前只有少部分人有这个条件,下面是真机以外的两个调试方案。AndroidStudio在AndroidStudio3.5里增加了折叠屏设备的虚拟机,我们可以创建一个来调试:.jpg通过点击模拟器上的按钮,我们可以切换虚拟机的折叠和展开状态:.jpg命令行我们可以通过命令行动态修改手机分辨率,达到模拟折叠屏切换的效果,以MateX的分辨率为例,我们先使用命令行:手机分辨率将模拟为1148x2480,这是MateX折叠时的分辨率,这时再输入:将手机分辨率修改为MateX展开后的分辨率2200x2480,用这种方式模拟了折叠屏展开的切换。你可以再次修改分辨率为1148x2480,模拟屏幕折叠的切换。最后玩完了用下面命令行恢复手机自身分辨率:结束

关于折叠屏的适配,就介绍这么多。总的来说,如果要适配折叠屏,第一步是把resizeableActivity

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论