Android 8.0 以下版本
在 标签中添加名为 android.max_aspect 的 meta-data:
如果 resizeableActivity 设为 true,就不需要设置 maxAspectRatio 了,设了也不会生效。
/ 监听尺寸改变 /
在默认情况下,当屏幕发生了变化,系统会销毁并重新创建整个 Activity。但我们希望屏幕变化之后,程序能够以切换前的状态继续运行,不需要重启页面。
我们可以给 Activity 添加配置:
android:configChanges=“screenSize|smallestScreenSize|screenLayout”
这样配置后,当屏幕发生变化就不会重启 Activity 了,会调用到 onConfigurationChanged 方法,我们可以在这个方法里获取到当前的屏幕信息:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.i(“config”, “newConfig.screenHeightDp:” + newConfig.screenHeightDp
- “, newConfig.screenWidthDp” + newConfig.screenWidthDp);
}
这样改之后需要注意测试,看看页面的布局是否发生错乱,如果布局不合理就需要修改布局以适配不同分辨率。
我们也可以根据屏幕信息来更新布局,比如在大屏幕上把 LinearLayout 切换成 GridLayout,充分利用大屏幕的显示空间,这是更进一步的优化做法了:
/ Android Q /
在即将到来的 Android Q 上,增加了一些支持折叠屏的特性。
==========================================================================
对于分屏模式,过去的分屏只支持两个应用同时显示,而大屏幕带来了更多的可能性,现在已经允许两个以上的应用同时显示了。
在 Android Q 之前的版本,以分屏模式运行的应用里面,只有获取到焦点的 Activity 会处于 onResume 状态,其他可见 Activity 都是处于 onPause 状态。
而在 Android Q 上,所有顶层可见 Activity 都处于 onResume 状态,保证在分屏模式下的可见 Activity 都能正常运行。但能获取到焦点的 Activity 依然只有一个,我们把这个 Activity 叫做 TopResumedActivity。
在 Android Q 的 Activity 里增加了一个生命周期回调方法 onTopResumedActivityChanged(),它会在 Activity 获取或失去焦点时调用,可以用来判断当前 Activity 是否拥有焦点:
protected void onTopResumedActivityChanged(boolean topResumed) {
if (topResumed) {
// 获取到焦点
} else {
// 失去焦点
}
}
当我们使用了独占资源时就要用到这个方法。什么叫独占资源?麦克风、摄像头就是,这类资源同一时间只能给一个 Activity 使用。
比如分屏模式下的多个 Activity 都使用了摄像头,但这时候只有获取到焦点的 Activity 拥有访问权限,这种情况下就要通过 onTopResumedActivityChanged() 判断当前 Activity 是否获取到焦点。在失去焦点的时候可以不释放摄像头,但是需要处理好摄像头断开连接和重新连接的情况。
minAspectRatio
在 Android Q 之前只能配置最大支持比例 maxAspectRatio,现在 Android Q 可以配置最小支持比例 minAspectRatio 了, 用法和 maxAspectRatio 一样:
最大最小支持比例,都是在 resizeableActivity 取 false 的时候才会有用。
/ 调试 /
最好的调试工具当然就是用真机了,但目前只有少部分人有这个条件,下面是真机以外的两个调试方案。
Android Studio
在 Android Studio 3.5 里增加了折叠屏设备的虚拟机,我们可以创建一个来调试:
通过点击模拟器上的按钮,我们可以切换虚拟机的折叠和展开状态:
命令行
我们可以通过命令行动态修改手机分辨率,达到模拟折叠屏切换的效果,以 Mate X 的分辨率为例,我们先使用命令行:
adb shell wm size 1148x2480
手机分辨率将模拟为 1148x2480,这是 Mate X 折叠时的分辨率,这时再输入:
adb shell wm size 2200x2480
将手机分辨率修改为 Mate X 展开后的分辨率 2200x2480,用这种方式模拟了折叠屏展开的切换。
你可以再次修改分辨率为 1148x2480,模拟屏幕折叠的切换。最后玩完了用下面命令行恢复手机自身分辨率:
adb shell wm size reset
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后
分享一份工作1到5年以上的Android程序员架构进阶学习路线体系,希望能对那些还在从事Android开发却还不知道如何去提升自己的,还处于迷茫的朋友!
-
阿里P7级Android架构师技术脑图;查漏补缺,体系化深入学习提升
-
**全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记
有任何问题,欢迎广大网友一起来交流
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
ndroid架构师技术脑图;查漏补缺,体系化深入学习提升
[外链图片转存中…(img-FACIpGPV-1712341678746)]
- **全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记
[外链图片转存中…(img-YaK7CV7h-1712341678747)]
有任何问题,欢迎广大网友一起来交流
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!