关于android屏幕适配的解决方案

首先,谈论一下为什么要进行屏幕适配。因为android手机的碎片化,导致了手机屏幕大小以及分辨率的区别。不同手机的屏幕大小不一样导致了屏幕分辨率不一样,甚至还有屏幕大小不一样但是屏幕分辨率是一样的,甚至还有屏幕大小一样但是屏幕分辨率不一样的情况。总总奇葩的问题摆放在我们面前,我们挨个进行分析。
先对绘制视图时的两个单位分别介绍:px, dp(dip)
px即分辨率,单位是像素。我们在android代码里面直接用的数值就是像素。
dp(dip)密度无关像素,是我们在开发绘图时用的比较常见的单位,在使用时会先根据像素进行计算得来,不同的像素对应的dp数值是不一样的。在Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px
我们开发是多用dp单位,是因为它解决了不同手机的屏幕大小不一样导致了屏幕分辨率不一样还有屏幕大小一样但是屏幕分辨率不一样的情况。但是如果屏幕大小不一样,但是屏幕分辨率相同的时候,用dp就显得捉襟见肘了,这会导致在小屏幕上的相对界面小于大屏幕的。
关于屏幕适配的几种解决方法:
1.尽量使用match,wrap,缺点就是不可能所有的布局都使用
2.使用百分比布局,谷歌是有相对应的百分比布局库的,缺点就是设计的时候需要设计师按照百分比来设计。
3.根据设计师的设计图分辨率来指定单位。例如在一张480*320分辨率的图纸上标注px。这时候我们需要创建一value文件夹value-480x320,创建lay_x并且标注
<?xml version="1.0" encoding="utf-8"?>  
<resources><dimen name="x1">1.0px</dimen>  
<dimen name="x2">2.0px</dimen>  
<dimen name="x3">3.0px</dimen>  
<dimen name="x4">4.0px</dimen>  
<dimen name="x5">5.0px</dimen>   
...省略好多行   
<dimen name="x320">320px</dimen>  
</resources>  
创建lay_y并分别标注
<resources><dimen name="y1">1.0px</dimen>  
<dimen name="y2">2.0px</dimen>  
<dimen name="y3">3.0px</dimen>  
<dimen name="y4">4.0px</dimen>  
<dimen name="y5">5.0px</dimen>   
...省略好多行   
<dimen name="y480">4800px</dimen>  
</resources>  
当我们需要适配720*480分辨率的手机时,需要扩大1.5倍即创建value-720x480的文件夹,创建lay_x
<resources><dimen name="x1">1.5px</dimen>  
<dimen name="x2">3.0px</dimen>  
<dimen name="x3">4.5px</dimen>  
<dimen name="x4">6.0px</dimen>  
<dimen name="x5">7.5px</dimen>   
...省略好多行   
<dimen name="x320">480px</dimen>  
</resources>  

创建lay_y如上。
这时候我们需要创建多个适配屏幕的文件。缺点就是容易遗漏部分分辨率的手机,这样可能造成页面适配问题
所以在面对屏幕适配的时候,我们不可能做到万无一失的适配所有手机,这就是android手机碎片化所产生的副作用之一。我们只能尽量的去适配大部分的主流手机。
如果非要使用具体数值进行标注位置,我建议还是使用dp。如果使用第三种方法,我们很可能无法想到所有的手机机型。而如果使用dp,受到的影响可能没有这么大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值