屏幕适配
为什么需要屏幕适配?
Android机型碎片化严重 各种机型分辨率的手机都有
分辨率太多,为了UI美观,良好的用户体验 所以屏幕适配
布局适配
布局适配 (1.dp,px,sp, 相对布局,权重,MatchParent,)
dp ===dip : 在屏幕密度是160ppi的时候 1dp=1px
px 像素 构成图像的最小单位
sp Scale-Independent Pixels 缩放像素 用于字体大小
pt 磅
dpi和ppi
dpi:每英寸多少点,该值越高,则图片越细腻
ppi:每英寸像素数,该值越高,则屏幕越细腻
mm 毫米
in 1英寸=2.54厘米(约); ===160个px 像素点
pt:1pt=1/72英寸=0.035厘米 ==== 2.2个像素点
重点:dpi, dip=dp px
-
在屏幕密度是160的屏幕上 1dip=1px 320*480 分辨率的手机 === mdpi目录
-
在屏幕密度是120的屏幕上 1dip=0.75px 240*320 分辨率的手机
-
=====ldpi目录
-
在屏幕密度是240的屏幕上 1dip=1.5px 480800或者540960分辨的手机 ======hdpi目录
-
主流 在屏幕密度是320的屏幕上 1dip=2px 1280*720分辨率的手机 ======xhdpi目录
-
主流 在屏幕密度是480的屏幕上 1dip=3px 1920*1080分辨率的手机=======xxhdpi目录
-
在屏幕密度是640的屏幕上 1dip=4px 2560*1440分辨率的手机========xxxhdpi目录
ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi 120 160 240 320 480 640 密度比值: 0.75 1 1.5 2 3 4 48*48 72*72
使用方法
px适配
1280720 px 19201080 px
原因:美工切的图上面标注的都是px
以1920*1080分斌率为基准,其他分辨率等比缩放
(根据不同的屏幕,x1080变量会代表对应的px值)
dp适配 ==dip
1920**1080
宽度=1080px/3=360dip=360dp
1080**720
宽度=720px/2=360dip=360dp
2560**1440
宽度=1440px/4=360dip=360dp
总结:
px适配
px适配:优点:使用起来简单
缺点: 每一种需要适配的手机都要创建一个与其对应的values目录 占用apk空间大
dp适配(最小宽度限定符适配)
优点:1.占用apk空间小,适配范围广,不需要创建多个values文件 缺点:2.使用起来稍微麻烦 需要计算
图片适配(1. .9.png) https://www.jianshu.com/p/5996e80aee9b
2. 矢量图
优点:图片扩展性:它可以进行缩放并且不损失图片的质量,
这意味着使用同一个文件对不同屏幕密度调整大小并不损失图片的质量;
图片大小:同样大小和内容图片下相比,矢量图比PNG图片更小,
这样就能得到更小的APK文件和更少的维护工作;
缺点: 矢量图大的时候 消耗CPU资源(耗费时间)
drawable-mdpi 320*480
drawable-ldpi 240*320
drawable-hdpi 480*800
drawable-xhdpi 1280*720
drawable-xxhdpi 1920*1080
结论:1.每个分辨率目录下面的图片都会运行到对应的分辨率的手机上
2. 只是运行在320*480的手机上
如果mdpi目录下没有图片的话会先从hdpi里面找,
如果hdpi目录里面没有的话会从xhdp里面找,
如果xhdpi里面没有的话会从ldpi目录里面找,
最后才从xxhdpi目录面找
h>xh>l>xxh
做一套(1280720放在xhdpi里面(主流)或者 19201080放在xxhdpi里面)
一般会把图片放在hdpi目录里面, 大图片
高分辨率的图片放到低分辨率的手机上会有什么效果? 会压缩,会失真
地分辨的托片运行在高分辨的手机上会有什么效果? 拉伸 ,会失真
logo可以做多套放在不同分辨率的目录里
其他的背景图 都可以有.9.png图片做