这里所说的“屏幕适配”指的是:不同屏幕分辨率,不同物理尺寸的适配。
如果屏幕分辨率相同,那么直接写死像素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