Android屏幕适配总结

这里所说的“屏幕适配”指的是:不同屏幕分辨率,不同物理尺寸的适配。

如果屏幕分辨率相同,那么直接写死像素PX就OK了。

如果物理尺寸相同,那么直接按照物理尺寸大小,写好dp就OK了。

今天这里介绍的适配,为一种妥协的适配方案:存在一种或者几种最适的分辨率或者物理尺寸,其他分辨率或者物理尺寸的屏幕为次适应。

一、一个或者多个最适分辨率(其他屏幕分辨率次适应)

1、SurfaceView自定义绘图时的适配

这里假设我们的最适目标屏幕的宽为srcWidth,高为srcHeight,宽/高的比例为srcRatio;其他次适应的屏幕宽为targetWidth,高为targetHeight,宽/高的比例为targetRatio。

按照“次适应屏幕”相对于“最适应屏幕”较窄的边计算缩放比例系数ratio。Ratio计算代码如下:

targetRatio=targetWidth/targetHeight
srcRatio=srcWidth/srcHeight
//目标的宽高比例>原始宽高比例
if(targetRatio>srcRatio)
{
         //那我以高来做比例ratio的计算
         ratio=targetHeight/srcHeight;
}else{
         //那我以宽来做比例ratio的计算
         ratio=targetWidth/srcWidth;
}

surfaceView中绘制的图片,按照该ratio比例进行缩放。
这里写图片描述
图1、1280*720设备效果(最适)
这里写图片描述
图2、800*480设备效果(次适)

由于1280/720 = 1.77(最适); 800/480 = 1.66(次适)。targetRatio

二、最适“物理尺寸”

1、最适4.7存手机屏幕的方案

拿红米来举例:红米的屏幕像素宽高为1280*720,密度为2,宽为4英寸,高为2.25英寸;宽对应640dp,高度对应360dp。

详细计算不明白的同学请查看连接:http://xiaxveliang.blog.163.com/blog/static/29708034201481810138666/

那么如果GUI给出的图是1920*1080的,将1920/3 = 640dp,1080/3=360dp

所以按照dp布局View的宽高,屏幕的宽为640dp,高为360dp

三、多套dimen的适配方案
http://blog.csdn.net/lmj623565791/article/details/45460089

四、谷歌的android.support.percent
http://blog.csdn.net/lmj623565791/article/details/46695347

猜你喜欢

转载自blog.csdn.net/aiwusheng/article/details/72568613