Android屏幕适配

一:一些概念的理解:

屏幕尺寸:屏幕的对角线,如一台小米电视49寸说的就是电视对角线长度是49寸(1英寸=2.54厘米)

分辨率:
1920×1080指纵向1920个像素点,横向1080个像素点,1280*720同理

屏幕像素密度(DPI<Dots Per Inch>):
指每一英寸长度中,可显示输出的像素个数,假如一英寸里面有160个像素,这个屏幕的像素密度就是160dpi
DPI的数字受屏幕尺寸和分辨率所影响,DPI可以通过计算所得

dp,dip,sp,px它们之间的关系
px:
构成图像的最小单位,其实就是像素单位即分辨率单位,比如我们通常说的手机分辨列表800*400都是px的单位

dp/dip:
dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像素,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。
也就是说当前我们设备的DP是由android给予的基础标准按比例进行翻译的,这也是为什么我们用DP能解决一部分适配的原因

desity
密度,表示一个dp多少个像素。desity = dpi/160

sp:同dp相似,sp作为字体大小单位,会随着系统的字体大小改变,而dp作为单位则不会。所以建议在字体大小的数值要使用sp作为单位

mdpi,hdpi,xdpi,xxdpi,xxxdpi?如何计算和区分

名称     像素密度范围     图标尺寸
mdpi   120dpi ~ 160dpi  48*48px
hdpi   160dpi ~ 240dpi  72*72px
xdpi   240dpi ~ 320dpi  96*96px
xxdpi  320dpi ~ 480dpi  144*144
xxxdpi 480dpi ~ 640dpi  192*192

在Google官方开发文档中,说明了 ** mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 ** 的尺寸比例进行缩放。例如,一个图标的大小为48×48dp,表示在mdpi上,实际大小为48×48px,在hdpi像素密度上,实际尺寸为mdpi上的1.5倍,即72×72px,以此类推,可以继续往后增加,不过一般情况下已经够用了,这种用来去适配手机和平板之间的图形问题
 

二:开始适配

1.常识性适配:

1.1.使用 "wrap_content" 和 "match_parent"
1.2.相对布局
1.3.. .9图的应用

2.其他适配:限定符(SW)


限定符:android在进行资源加载的时候,会根据屏幕信息加载对应文件夹名字所在的那个文件夹资源,这些特殊的资源文件夹名字就是限定符

简单说明:
SW全称是Smallest Width,表示最小宽度,例如一个适配文件夹values-sw411dp表示如果手机的最小宽度是411dp,那么就命中该文件夹,使用的配置都是这个文件夹下的。代码中可以用getResources().getConfiguration().smallestScreenWidthDp获取sw

sw的理论上计算原理
例如:已知一个5.1寸手机的分辨率为1440*2560,求sw?
sw = 1440/desity,desity = dpi/160,dpi = sqrt(1440x1440+2560x2560)/5.1
sw = 1440/desity,desity = dpi/160,dpi =576
sw = 1440/desity,desity = 3.6
sw = 400

理论上是这样的,实际真的是这样吗?
实际结果
调用getResources().getConfiguration().smallestScreenWidthDp获取结果是411,也就是说sw = 411dp,这个时候不淡定了,适配这个手机要用values-sw411dp而不是上面计算的values-sw400dp。

3,屏幕适配解决方法

3,1 第一种:自定义布局组件

其核心原理是根据一个参照分辨率进行布局(比如参照UI给的1080*1920),然后再各个机器上提取当前机器分辨率换算出系数之后,然后再通过重新测量的方式来达到适配的效果,这一套方案基本能适用于95以上的机型

3.2 第二种:Dimens适配

结合SW限定符计算得到:
300x400,5寸屏 的限定符SW=300PX/Desity=300PX/0.625=480
600x800,10寸屏 的限定符SW=600PX/Desity=600PX/0.625=960
所以就是SW480和SW960

下面使用Android官方给我们提供的插件ScreenMatch(具体使用详情百度一大堆.查一下就明白了)自动给我们生成SWXXX文件

自动生成了对应的dimens文件之后,在xml文件中就可以直接使用dimens,系统会根据手机去寻找对应文件夹下的dimens文件用作适配

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值