展开之后, 屏幕变大。   https://www.jb51.net/article/165481.htm

折叠屏适配

折叠屏之所以需要适配,是因为我们的应用有可能在运行的过程中,所在的屏幕尺寸发生了变化,这种情况对现有项目多少都会产生一些问题。

所以折叠屏适配的本质是: 当应用运行时,屏幕的尺寸、密度或比例发生了变化,应用能够继续在变化后的屏幕上正常显示和正常运行。

其实这种情况并不是折叠屏出现之后才有的,应用的纵向横向切换也会发生同样的情况,只不过很多应用都强制纵向,不需要处理这种适配了。

允许改变应用尺寸

要适配折叠屏,首先是要让应用支持动态改变尺寸,我们需要在 menifest 中的 Application 或对应的 Activity 下声明:

1

android:resizeableActivity="true"

相反,如果暂时不打算适配,把这个参数设为 false 就好了。

需要说明的是,这个参数在 Android 7.0 或更高版本默认为 true,以下则默认为 false。

下面介绍两个和这个参数相关的概念。

兼容模式

当 resizeableActivity 取 false 时,展开折叠屏可能会变成这样的效果:

.jpg

这个效果类似于在 iPad 上使用不兼容的 iPhone 应用,这个四周用黑色填充的模式,叫兼容模式。

兼容模式的显示和最大支持比例 maxAspectRatio 有关,当屏幕比例超过 maxAspectRatio 时才会用黑边填充,官方建议把 maxAspectRatio 设为 2.4 (12 : 5),修改 maxAspectRatio 的方法如下:

Android 8.0 或以上版本

在 标签中配置 android:maxAspectRatio:

1

2

<activity android:name=".MainActivity"

   android:maxAspectRatio="2.4" />

Android 8.0 以下版本

在 标签中添加名为 android.max_aspect 的 meta-data:

1

<meta-data android:name="android.max_aspect" android:value="2.4" />

如果 resizeableActivity 设为 true,就不需要设置 maxAspectRatio 了,设了也不会生效。

监听尺寸改变

在默认情况下,当屏幕发生了变化,系统会销毁并重新创建整个 Activity。但我们希望屏幕变化之后,程序能够以切换前的状态继续运行,不需要重启页面。

我们可以给 Activity 添加配置:

1

android:configChanges="screenSize|smallestScreenSize|screenLayout"

这样配置后,当屏幕发生变化就不会重启 Activity 了,会调用到 onConfigurationChanged 方法,我们可以在这个方法里获取到当前的屏幕信息:

1

2

3

4

5

6

@Override

public void onConfigurationChanged(Configuration newConfig) {

 super.onConfigurationChanged(newConfig);

 Log.i("config", "newConfig.screenHeightDp:" + newConfig.screenHeightDp

   + ", newConfig.screenWidthDp" + newConfig.screenWidthDp);

}

调试

最好的调试工具当然就是用真机了,但目前只有少部分人有这个条件,下面是真机以外的两个调试方案。

Android Studio

在 Android Studio 3.5 里增加了折叠屏设备的虚拟机,我们可以创建一个来调试:

通过点击模拟器上的按钮,我们可以切换虚拟机的折叠和展开状态:

结束

关于折叠屏的适配,就介绍这么多。总的来说,如果要适配折叠屏,第一步是把 resizeableActivity 设为 true,然后给 Activity 配置 configChanges,并进行测试。最后可以更近一步,给大屏幕设计另一套 UI,在折叠屏切换时切换 UI。
下面是一些相关的参考资料:

Google - 打造适用于可折叠设备的应用
华为折叠屏应用开发指导
三星折叠屏应用开发指导

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

关于折叠屏手机的适配相关推荐

  1. android大屏适配_大屏开创者三星Note系列,也要被更大屏的折叠屏手机取代了

    临近年关,各个手机厂商们的旗舰产品也都发布的差不多了,发布会数量也在逐渐减少,紧随而来的就是一年一度的手机曝光大赛了,关于明年旗舰产品的信息也开始逐渐浮出水面. 其中一条关于三星旗舰的曝光信息则比较特 ...

  2. 高德地图车道级导航适配OPPO Find N折叠屏手机

    12月17日消息,近日,OPPO正式发布了旗下折叠屏手机OPPO Find N,该款手机中用户可通过高德地图APP实现车道级精准定位和导航. 高德车道级导航是高德与手机.汽车及通信等领域合作伙伴共同研 ...

  3. uniapp解决折叠屏手机适配问题

    折叠屏手机翻开或关上时,手机的宽度会改变:那么怎么监测手机屏幕的变化呢,这就用到了uniapp中的uni.onWindowResize onShow: function() {uni.onWindow ...

  4. 最低售价17999元,华为发布新一代折叠屏手机Mate X2,将首批升级HarmonyOS

    2019年,华为发布第一代折叠屏Mate X,开启了5G折叠屏手机新纪元:2020年,华为发布第二代折叠屏Mate Xs,实现了折叠屏手机从硬件到生态的演进. 2月22日,华为举行新一代折叠旗舰发布会 ...

  5. android 通知取消折叠_三星折叠屏手机发布会取消背后-折叠屏真的是用户想要的吗...

    应该说折叠屏是今天手机的一个新的形态,不管是华为之前发布的mateX还是三星Galaxy Fold,这种产品的形态相比现在很多手机产品在相机等等上面的卖力突破,会给人一种更加直观的感受,很多的数码爱好 ...

  6. 售价19000元!华为发布全新5G折叠屏手机Mate Xs

    [TechWeb]2020年2月24日,华为消费者业务举行主题为"共联未来"的产品与战略线上发布会,面向全球发布其全新5G折叠屏手机HUAWEI Mate Xs.HUAWEI Ma ...

  7. 再等等!华为折叠屏手机Mate X预计在7月底至8月初开售

    今日,华为在武汉正式发布nova5系列手机新品.在会后的媒体专访环节中,华为消费者业务手机业务总裁何刚谈到了备受观点的折叠屏手机Mate X. 何刚表示,华为Mate X计划在今年7月底至8月初正式开 ...

  8. 首秀双折叠屏手机却被友商炮轰 小米回应:悍然碰瓷!

    [TechWeb]昨日晚间,柔宇科技副总裁樊俊超发文吐槽小米,该文指出,小米仅购买了LG的柔性屏概念机,并以此进行展示,并非真正的创新,甚至是公然造假.并称小米时核心技术专利产线啥都没有的手机组装公司 ...

  9. 新一代华为折叠屏手机MateX2,你会考虑入手吗?

    2月22日华为用半个多小时完成了这次华为mateX2 折叠屏手机的发布,余承东用了半个小时介绍了新一代的折叠屏手机,对于折叠屏的也算是有了一个全新的认识,但是考虑不考虑买的问题,我捂了捂自己的口袋,还 ...

  10. 丧心病狂!华为折叠屏手机一秒售罄,炒到9万一部!

    本文转自:中国经济网 前几天,11月15日10时08分,华为首款可折叠屏5G手机Mate X在华为商城正式开售,全网通8GB+512GB(星际蓝)版售价16999元.据悉,开售之后,华为Mate X ...

最新文章

  1. whereis php,Linux命令教程之比较搜索命令whereis与which的区别
  2. 皮一皮:现在知道公司老说信息完整的重要性...
  3. CAS 之 集成RESTful API
  4. javascript取随机数_Js怎么产生随机数?
  5. 机房服务器虚拟化,服务器虚拟化在数据中心机房中的应用
  6. java beans_java beans的概念及应用?
  7. 【牛客 - 283E】贪心只能过样例(模拟)
  8. 1s完成 大文件分割方案
  9. concat php,php基于concat实现无限分类
  10. oracle 导出空表问题
  11. 基于 HTML5 WebGL 的 3D 智慧隧道漫游巡检
  12. UE4移动平台上基于物理的着色
  13. Intel异常的分类:错误,陷阱,终止
  14. 快速阅读《构建之法》——构建之法阅读笔记01
  15. warning C4995: strcat name was marked as #pragma deprecated
  16. python实现ncm转mp3_python网易云ncm转mp3
  17. 原型设计工具Pencil的使用
  18. maven镜像仓库的配置
  19. 第八十五章 Caché 函数大全 $ZDATETIME 函数
  20. python最简单的爬取邮箱地址_python小脚本-提取邮箱

热门文章

  1. 利用base64展示图片
  2. Unity开发手机游戏从第一行代码到Taptap上线,我经历了什么
  3. Android实现多国语言适配:app名称随系统的语言而更换
  4. linux xps文件,XPS 文件扩展名: 它是什么以及如何打开它?
  5. 描述内存分配方式以及它们的区别?
  6. 吉他C调和D调的区别到底是什么???
  7. Android 自带的字体库、字体样式
  8. 2019年高中数学圆锥曲线解题技巧方法总结及高考试题
  9. 微信小程序获取access_token报错errcode: 40125,errmsg: invalid appsecret
  10. 七参数空间直角坐标系坐标转换