[Android]关于Android UI的适配方案

本文详细介绍了Android UI适配的多种策略,包括使用dp替代px、自动适配布局、宽高限定符以及最小宽度限定符。针对不同分辨率和dpi设备,通过创建不同资源文件夹进行适配,并讨论了第三方适配框架的工作原理和局限性。同时,强调了在Android设备碎片化背景下,如何通过合理选择和组合适配方案来优化用户体验。
摘要由CSDN通过智能技术生成

大纲

  1. 使用dp而不是px
  2. 尽量使用自动适配布局,而不要指定分辨率
  3. 使用宽高限定符
    1. values-1080x1920,以1080P为基准计算每种常见分辨率对应的尺寸。
    2. 需要尽可能全的添加各种设备的分辨率(有工具)
    3. 容错性不足,如果设备分辨率不能精确匹配对应限定符,会默认使用统一默认的dimens
  4. 第三方自动适配UI框架
    1. 原理:自定义RelativeLayout,在onMeasure中对控件分辨率做变换
    2. 第三方框架,维护性很成问题
    3. 一些自定义View,处理比较麻烦
  5. 最小宽度限定符,类似宽高限定符
    1. values-sw240dp,同样以某一dp宽度为基准计算其他宽度dp的值
    2. values-sw360dp、values-sw480dp
    3. 相比宽高限定符,最小宽度限定符不进行精确匹配,会遵循就近原则,可以较好的解决容错问题。
    4. 如:设备宽364dp,系统会自动就近配置values-sw360dp下的dimens,显示效果相差不会很大
  6. 今日头条——修改density值
    1. 原理:px = dp x (dpi/160) = dp x density
    2. 既然如此,将density
    3. 需要UI出设计图时以统一的dp为基准
    4. mp.weixin.qq.com/s/d9QCoBP6k…

基本概念

  • 像素——px
  • 密度独立像素——dp或dip
  • 像素密度——dpi,单位面积内的像素数。
    • 软件系统的概念。
    • 在系统出厂时,配置文件中的固定值。
    • 通常的取值有:160、240、360、480等。
    • 不同于物理概念上的屏幕密度ppi,如ppi为415、430和470时,dpi可能会统一设置为480。
  • density——当dpi=160时,1px = 1pd,此时denstiy的值为1,dpi=240时,1.5px = 1dp,density的值为1.5。
  • 上述值的关系:
    • denstiy = dpi / 160;
    • px = dp x density = dp x (dpi / 160)

Android设备的碎片化极为严重,各种尺寸和分辨率的设备无比繁多。使得在Android开发中,UI适配变成了开发过程中极为重要的一步。为此Google提出了密度独立像素dip或dp的概率,旨在更友好的处理Android UI适配问题。

但是效果嘛,只能说差强人意,可以解决大部分的业务场景,但是剩下的个别情况就搞死人了,原因在于Android设备碎片化实在太严重了,存在各种分辨率和dpi的设备。

比如两台设备A和B,分辨率是1920x1080,dpi分别为420和480,在布局中编写一个100dp宽的ImageView,按照上面的公式ImageView的显示宽度分别为:100dp x 420 / 160 = 262.5100dp x 480 / 160 = 300,ImageView在B设

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>