android UI适配

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/donghejk/article/details/88807522

本次项目中用了autosize头条适配方案。这次顺带把UI适配原理总结一下。

1.首先要明白一个公式:

公式:dp值×(当前dpi/160dpi)=>得出当前的像素数目

px :平常所说的1920×1080只是像素数量,也就是1920px×1080px,代表手机高度上有1920个像素点,宽度上有1080个像素点。

dpi:要想判别手机屏幕的显示好坏,还要考虑屏幕的宽高(英寸),也就是用dpi即每英寸多少像素来评价屏幕的显示效果。(不然假如手机分辨率是1920×1080,但是屏幕是几十寸的,那显示效果将不会很好,甚至你有可能看到小的像素块,那将更影响视觉效果。)

dp:其实dp就是为了使得开发者设置的长度能够根据不同屏幕(分辨率/尺寸也就是dpi)获得不同的像素(px)数量。比如:我将一个控件设置长度为1dp,那么在160dpi上该控件长度为1px,在240dpi的屏幕上该控件的长度为1*240/160=1.5个像素点。

也就是dp会随着不同屏幕而改变控件长度的像素数量。

2.auto size原理

其实今日头条的适配看到最后其实就是缩放比例。

也就是算出屏幕和设计稿的比例,根据设计稿控件的大小按缩放比例算出应该在屏幕上的大小

再来一个公式:density = dpi/160;

扫描二维码关注公众号,回复: 6203718 查看本文章

结合上面一个公式,再结合此公式,推出:

px = density * dp;

首先算出density = 屏幕宽/设计稿宽(其实这里autosize偷换了这个概念,density不是比例,是一个倍率)

然后  dp*density = px 就是控件在屏幕上应有的大小

3.ContentProvider

很有意思的是看源码时发现库的初始化是从ContentProvider开始的,也就是说ContentProvider的oncreate方法先于Application的onCreate方法执行的

猜你喜欢

转载自blog.csdn.net/donghejk/article/details/88807522