Android屏幕适配

屏幕适配我们经常接触的有三种:

1.宽高限定符适配

2.今日头条适配方案(密度适配)

3.smallestWidth

                                               1.宽高限定符适配

       此种适配就是穷举市面上所有的Android手机的宽高像素值:

 

 

 

 

设定一个基准分辨率,其他分辨率都是根据它算出.在不同的尺寸文件夹内部,根据该尺寸编写对应的dimens文件。

比如以480*320为准,此dimens文件如下:

 宽度平分320份,x1-----x320;(在这个区间内X的值从1变到320)

高度平分480份.Y1------Y480;(在这个区间内Y的值从1变到480)

分辨率1920*1080:

 宽度平分320份,x1-----x320;(在这个区间内X的值从1变到1080)

X1为(1080/320)*1=3.375

X2为(1080/320)*2=6.75

..............

高度平分480份.Y1------Y480;(在这个区间内Y的值从1变到1920)

 

当手机运行在不同分辨率的手机上时系统分根据demens去寻找对应的分辨率文件夹下的dements.xml

eg:手机的分辨率为1920*1080,系统一定要找到1920x1080的限定符,否则就只能用统一的默认的dimens文件了。而使用默认的尺寸的话,UI就很可能变形,简单说,就是容错机制很差。

  • 致命缺陷:必须精准命中要不然就是用默认的 ,如果默认分辨率跟手机分辨率相差太大那么图像就会失帧!

 

           

                                                                 2.今日头条适配         

这个方案的思路,它是通过修改density值,强行把所有不同尺寸分辨率的手机的宽度dp值改成一个统一的值,这样就解决了所有的适配问题。

px=density*dp;

由于各个手机的px值是不以一样的,dp值又是不变的,eg:设计图为360dp,手机的宽度为1200px ,desity=1200px/360dp;

 

 

                                                     3.  smallestWidth适配

 

smallestWidth又叫做最小宽度适配, 为什么叫最小宽度呢,最小宽度指的是取宽高的最小值,当手机横屏时 宽大于高那么取高,手机竖屏时,宽小于高取宽!

eg:1920*1080 dip480; 

dp=px/density;

dp=px/(dip/160)

屏幕的宽度=1080/(480/160);

屏幕的宽度=360;

那么此时系统就会找 sw-360dp文件夹下的diments.xml,如果没有找到就会找与360相近的值,相近在此指的是向下找!

diments.xml解读 :该文件的数据以最小宽度限定符限定,   <dimen name="px_xxxxx">这里边的数字是可以自己定义的,比如设计图的宽度是375,手机为1920*1080,dpi=480,那么此时values-sw360dp 中的 dimens.xml文件375处生成的值都等于<dimen name="px_375">360</dimen> 那么 <dimen name="px_376">361....</dimen> <dimen name="px_377">362....</dimen> 这里的值都是可以加的 此文件下不止到375处结束,什么时候结束都是自己可以控制的!

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值