您的位置 首页 > 数码极客

Android程序如何适应不同分辨率

1.美工设计会给你一套带有px标注的界面切图,你需要知道是美工是在什么分辨率下的画布做的界面切图;

现在一般都是在1080*1920分辨率下做图的;

1080*1920分辨率的画布下做图如下:

我们的美工设计是在1080*1920的画布上标注的宽高是:1200px*900px;

1200 * 900px=1200px/3 * 900px/3 = 400dp * 300dp;这个界面的宽为400dp,高为300dp;

如果我们将画布的分辨为改为720*1920,在原有的界面比例不变的情况下标注对应的标注会变小1.5倍:800px*600px;

800px*600px=800px/2 * 600px/2 = 400dp * 300dp;这个界面的宽为400dp,高为300dp;

最后我们得到的都是400dp和300dp宽高;因此我们的dp是一个与分辨率无关的长度单位;

所以我们只需要知道美工是在什么分辨率下做的图,对应的px标注根据1080*1920是除以3, 720*1280是除以2,如下

那我们android使用dp值是不是就不需要做屏幕适配了呢?其实在工作很多公司美工只会切一套分辨率的界面图给你,

我们开发的话也通常只需要根据px标注转换为dp就行了,因为dp就是可以看做px分辨率转换为尺寸后的长度单位,那什么时候我们需要做屏幕适配呢,就是在不同的尺寸的屏幕下如平板就需要做适配,不信你看下面测试;

1080*1920 xxhdpi 5.0寸

720*1280 xhdpi 4.7寸

800*1280 tvdpi 7.0寸

上面在1080*1920和在720*1280的分辨下不改变dp的界面比例效果是一样的,只有在平板尺寸变大了的情况下不改变dp的界面的比例效果才会改变这时就需要做适配了,因此得到dp如分辨率无关与设备尺寸有关的长度单位,因为平板的尺寸变长了所以对应的dp需要变大。

相关介绍

240×320的屏幕是低密度120dpi,即ldpi;320×480的屏幕是中密度160dpi,即mdpi;480×800的屏幕是高密度240dpi,即hdpi;720×1280的屏幕是超高密度320dpi,即xhdpi;1080×1920的屏幕是超超高密度480dpi,即xxhdpi。

计算方法:

1.得到设备的分辨率

2.得到设备尺寸

3.列:1280*720的分辨率,就是1280的屏幕密度*720的屏幕密度:

1. 分辨率就是手机屏幕的像素点数,在相同尺寸的设备下,

2. 屏幕大小:屏幕对角线的长度,5寸*2.54厘米/寸=12.7厘米.

3. 密度:屏幕的密度,先算出对角线的像素点数(分辨率)然后除以对对角线的长度(屏幕大小尺寸),

1280*720的分辨率在5英寸的屏幕上的密度计算:(1280*1280+720*720)开方=1468,得到屏幕的像素点,1468/5≈294dp,在默认的像素密度为160dp,294/160≈1.8倍,就是在正常的(320×480的屏幕是中密度160dpi,即mdpi)的基础上乘以1.8的倍速,系统默认会给2倍(720×1280的屏幕是超高密度320dpi)

引用:

“实际密度”就是我们自己算出来的密度,这个密度代表了屏幕真实的细腻程度,如上述例子中的294dpi就是实际密度,说明这块屏幕每寸有294个像素。5英寸1280*720的屏幕密度是294,而相同分辨率的4.5英寸屏幕密度是326。如此看来,屏幕密度将会出现很多数值,呈现严重的碎片化。而密度又是安卓屏幕将界面进行缩放显示的依据,那么安卓是如何适配这么多屏幕的呢?

其实,每部安卓手机屏幕都有一个初始的固定密度,这些数值是120、160、240、320、480,我们权且称为“系统密度”。大家发现规律没有?相隔数值之间是2倍的关系。一般情况下,240×320的屏幕是低密度120dpi,即ldpi;320×480的屏幕是中密度160dpi,即mdpi;480×800的屏幕是高密度240dpi,即hdpi;720×1280的屏幕是超高密度320dpi,即xhdpi;1080×1920的屏幕是超超高密度480dpi,即xxhdpi。

安卓对界面元素进行缩放的比例依据正是系统密度,而不是实际密度,160是系统给出基于屏幕尺寸和像素占比最优值。

关于平板如何做适配下次接着讲吧,其实就是根据计算出屏幕密度然后/160,假设我的平板密度为216dpi,216/160=1.3,根据标注1200px*900px转换为dp就是:1200px * 900px = 923dp * 692dp,具体的在res下如何文件夹很多资料都有,上面的连接有如何看设备的dip密度。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“Android程序如何适应不同分辨率”边界阅读