素材巴巴 > 程序开发 >

一文总结 Android屏幕适配

程序开发 2023-09-04 06:51:14

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

如果屏幕分辨率相同,那么直接写死像素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、1280720设备效果(最适)
这里写图片描述
图2、800
480设备效果(次适)

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

案例代码下载:
http://download.csdn.net/detail/aiwusheng/8088361

2、其他布局Layout或者View
这种方式下,比例系数Ratio的计算与“1、SurfaceView自定义绘图时的适配”中计算方式相同。

代码不再介绍,这里请看如下效果图:

这里写图片描述
图1、480800设备效果(最适)
这里写图片描述
图2、720
1280设备效果(次适)

原理与“1、SurfaceView自定义绘图时的适配”相同,这里不再做介绍。

案例代码下载:
http://download.csdn.net/detail/aiwusheng/8088361

3、几种最适分辨率

还可以写多套资源文件,如下图3所示:

有一个同学用了一个脚本,把所有分辨率尺寸的dimens全部生成出来,这里我把链接分享出来:

http://blog.csdn.net/lmj623565791/article/details/45460089

这里写图片描述

图3、多套资源文件(几种最适分辨率)

4、GLSurfaceView适配

保证近平面上绘制的三角形,大小不变来做适配。

这里写图片描述
图4 透视投影示意图

这里写图片描述
图5正交投影示意图

二、最适“物理尺寸”

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

= THE END =

文章首发于公众号”CODING技术小馆“,如果文章对您有帮助,欢迎关注我的公众号。
欢迎关注我的公众号


标签:

上一篇: OpenStack Rally分析及实践 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。