Android 屏幕适配思路 (一)

请忽略这篇文章

先看这篇文章: Android 目前稳定高效的UI适配方案

总结下,Android适配最核心的问题有两个:

  • 适配的效率,即把设计图转化为App界面的过程是否高效
  • 如何保证实现 UI 界面在不同尺寸和分辨率的手机中 UI 的一致性。

1. dp 适配

通过 dp 加上自适应布局和 weight 比例布局可以基本解决不同手机上适配的问题,这基本是最原始的 Android 适配方案。这种方式存在两个问题:

  • 第一,这只能保证我们写出来的界面适配绝大部分手机,部分手机仍然需要单独适配
  • 第二,这种方式无法快速高效的把设计师的设计稿实现到布局代码中,通过dp直接适配,我们只能让UI基本适配不同的手机,但是在设计图和UI代码之间的鸿沟,dp是无法解决的,因为dp不是真实像素。

2. 宽高限定符适配

为了高效的实现UI开发,出现了新的适配方案,我把它称作宽高限定符适配。简单说,就是穷举市面上所有的Android手机的宽高像素值。

但是这个方案有一个致命的缺陷,那就是需要精准命中才能适配,比如 1920x1080 的手机就一定要找到 1920x1080 的限定符,否则就只能用统一的默认的 dimens 文件了。而使用默认的尺寸的话,UI 就很可能变形,简单说,就是容错机制很差。

不过这个方案有一些团队用过,我们可以认为它是一个比较成熟有效的方案了。

3. 今日头条适配方案(更新)

这也是相对比较完美的方案,我先简单说一下这个方案的思路,它是通过修改 density 值,强行把所有不同尺寸分辨率的手机的宽度 dp 值改成一个统一的值,这样就解决了所有的适配问题。

比如,设计稿宽度是 360px,那么开发这边就会把目标 dp 值设为 360dp,在不同的设备中,动态修改 density 值,从而保证(手机像素宽度) px/density 这个值始终是 360dp,这样的话,就能保证 UI在不同的设备上表现一致了。

这个方案侵入性很低,而且也没有涉及私有 API,应该也是极不错的方案,我暂时也想不到强行修改 density 是否会有其他影响,既然有今日头条的大厂在用,稳定性应当是有保证的。

但是根据我的观察,这套方案对老项目是不太友好的,因为修改了系统的 density 值之后,整个布局的实际尺寸都会发生改变,如果想要在老项目文件中使用,恐怕整个布局文件中的尺寸都可能要重新按照设计稿修改一遍才行。因此,如果你是在维护或者改造老项目,使用这套方案就要三思了。

4. smallestWidth适配

smallestWidth 适配,或者叫 sw 限定符适配。指的是 Android 会识别屏幕可用高度和宽度的最小尺寸的dp值(其实就是手机的宽度值),然后根据识别到的结果去资源文件中寻找对应限定符的文件夹下的资源文件。

这种机制和上文提到的宽高限定符适配原理上是一样的,都是系统通过特定的规则来选择对应的文件。

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值