Android 屏幕适配

为什么要谈屏幕适配这个话题呢?

以前开发过程当中一直用的官方推荐的dip,偶尔看到过用dimens 文件适配的文章,后面也看到了一些建议dip就够了,dimens 文件适配有坑,自己没有尝试过,懒得折腾,平时开发的就几台测试机,有时在不同屏幕上适配看上去不怎么舒服,虽然大概知道是同样像素在不同尺寸下导致体验不一致导致的,但是一直懒得改,不知道多少人和我一样。。,直到...。

直到最近突然要开发一个TV项目,用dip 的方式在真机模拟器上差距实在太大,使用dimens 适配后,效果和设计图基本上差距不大了,但是还是没有深究,直到上个星期,被人家问到Android 屏幕如何适配?

1 项目中你是如何适配的?

因为不同屏幕不同尺寸像素的原因,导致宽高dip会有差异,所以官方的dip并不推荐,现在流行有 AutoLayout,dimens 适配,AutoLayout Issue 太多,作者好像也不再更新,我用的是约束布局加dimens。。。
复制代码

2 你所说的dimens 文件是怎么来的呢?

通过工具生成的。。
复制代码

3 你知道这个工具的原理吗?
...,

很诧异会问这个问题,看了掘金和一些博客才知道,这个月屏幕适配问题还挺火,对照着文章看了好几遍,有几个关键问题,用自己的话复述一下,加深自己的理解。

使用dip 导致适配时和UI设计师不一致的根本原因?

我看到是这样描述的

density 在每个设备上都是固定的,DPI / 160 = density,屏幕的总 px 宽度 / density = 屏幕的总 dp 宽度

设备 1,屏幕宽度为 1080px,480DPI,屏幕总 dp 宽度为 1080 / (480 / 160) = 360dp 设备 2,屏幕宽度为 1440,560DPI,屏幕总 dp 宽度为 1440 / (560 / 160) = 411dp

由以上可知,不同屏幕的总宽度dip值不一致,如果在不同屏幕当中用同样的dip 去做适配,得到的值也不一样,例如宽度 100dip 在 宽度为 360的dip上占0.278,在宽度为411dip的手机中为0.243,所以导致在不同屏幕上会有差异

头条适配原理

根据公式 dp * density = px ,而dp已经固定,通过修改density获得 px的值。
density 怎么来的呢? 最终结果应该是 假设 设计图 dip 为 uiDip 宽度px uPxWidth 设配dip 为 deviceDip 宽度为 dPxWidth

屏幕的 dPxwidth 和 deviceDip 已经固定 根据设备宽度px和设计图的dip 求得 density

density = devicePxWidth / uiWidthDip

根据公式求得设计图的dip宽度算在设备上的px宽度,最终得宽比和在实际图中宽度比一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值