问题背景:之前项目里UI是通过JSON模版来进行控制的,为了数据通用性强(与字体大小对应,匹配xml方便)采用dip作为单位。但遇到的问题是在不同的分辨率或屏幕密度的屏幕上不能够正常显示。虽然采用相对布局的模板设计既能解决屏幕适配问题又能解决手机在横竖屏翻转UI切换问题,但这样做有可能因为屏幕不同而造成UI显示变形(目前的需求不考虑屏幕翻转)。所以在不改变我之前就定好的UI模版规则的前提下,使一个模版适配所有屏幕就显得尤为重要了。
自己总结一般有如下方法:
1. fragment,它就是为屏幕尺寸的“碎片”而生的,但并不全能。
2. 百分比,目前新出来有开源库 compile ‘com.zhy:percent-support-extends:1.1.1’,很好用。
3. 缩放,缩放又有多种缩放方式:
a.对整个屏幕的横竖两个方向按照“屏幕宽/模板宽”和“屏幕高/模板高”的比例分别缩放,即将所有的位置、宽高、字体大小等数据全部按两个方向分别缩放。优点是:模板效果和屏幕效果接近。缺点:可能会因为屏幕不同造成轻度显示差异。
b.显示区域按照“屏幕宽/模板宽”与“屏幕高/模板高”的最小值进行横竖缩放。优点:不会造成显示差异。缺点:可能造成留白。
本次采用方法2中的a,原因有三点:
1. 界面效果与界面模板绑定。
2.考虑屏幕翻转,只要不是横屏的模版数据显示在竖屏上,就不会产生明显的显示差异。
3.不考虑屏幕翻转,在不同屏幕上的显示差异较小。
当然这是在我在画满了两大张纸然后解决了匹配所有屏幕这个问题的前提下,写这些的。(纸张就不传了,放在这也没多少人看得懂,不是难看懂而是难看)。而屏幕的翻转也只不过是在onConfigurationChanged()中切换模板而已。
dip,dp,px中与屏幕上显示效果直接相关的是px,其他概念自己查,网上一大堆。如果没有理解这些概念,下面的东西也是可有可无。
px与dip之间转换如下:
安卓适配所有屏幕UI的方法
最新推荐文章于 2024-03-16 17:42:02 发布
本文介绍了如何在Android应用中实现UI全屏幕适配,包括使用百分比库和屏幕缩放策略。作者通过比较fragment、百分比布局和不同缩放方法,选择了基于屏幕宽高比的缩放方案,并提供了px到dip的转换代码,确保在不同分辨率和密度的屏幕上UI显示效果良好。
摘要由CSDN通过智能技术生成