android屏幕分辨率适配

 

分辨率 高度 宽度 宽高比(宽/高)
1920x1080 1920 1080 0.5625
2094x1080 2094 1080 0.5157593123
2220x1080 2220 1080 0.4864864865
1280x720 1280 720 0.5625
2392x1440 2392 1440 0.602006689
2560x1440 2560 1440 0.5625
1776x1080 1776 1080 0.6081081081
2030x1080 2030 1080 0.5320197044
2118x1080 2118 1080 0.5099150142
2076x1080 2076 1080 0.5202312139
568x320 568 320 0.5633802817
800x480 800 480 0.6
854x480 854 480 0.5620608899
960x540 960 540 0.5625
1184x720 1184 720 0.6081081081
1208x720 1208 720 0.5960264901
1280x800 1280 800 0.625
1280x768 1280 768 0.6
1176x1080 1176 1080 0.9183673469
1800x1080 1800 1080 0.6
1812x1080 1812 1080 0.5960264901
1920x1152 1920 1152 0.6
1920x1200 1920 1200 0.625
2160x1080 2160 1080 0.5
2208x1080 2208 1080 0.4891304348
2240x1080 2240 1080 0.4821428571
2244x1080 2244 1080 0.4812834225
2280x1080 2280 1080 0.4736842105
2560x1312 2560 1312 0.5125
2560x1600 2560 1600 0.625
2960x1400 2960 1400 0.472972973

图一,完美的阐述了安卓分辨率之多,且宽高比率不一致的问题,

图二,完美的阐述了安卓分辨率的适配方案。

关于安卓手机分辨率尺寸各有不同,为了支持多种屏幕,给大家推荐三种适配方案:

1.googe开源百分比布局

2.动态适配各个屏幕分辨率      

3.静态适配各个屏幕分辨率(XML自动生成工具)

(以上三种方案可以根据项目实际情况相结合使用)

 

这里主要说下第二种方案和第三种方案的原理:

第二种方案,其实就是通过一系列算法去计算每个view在用户手机屏幕中应该的宽高,从而达到一个适配效果;

第三种方案,原理大致简单的说一下吧,每个公司都有自己的UI设计师,通常设计师会在一个屏幕尺寸上作图,例如设计师在1280x720上作图,那么我们在android项目工程的res目录下新建文件夹values-1208x720,另外再新建两个文件dimens_width.xml和dimens_height.xml用来存放宽度和高度。

   

我们可以看到,name-value的一一对应关系,所以UI设计师在1280x720尺寸上作图时,如果效果图上标注控件的宽是4px,高是2px,那么我们引用 android:layout_width="@dimen/width4px"   android:layout_height="@dimen/height2px"  就可以达到完美的适配效果。那么问题来了,它在1920x1080分辨率上的尺寸怎么办呢?使用“静态xml适配各个屏幕分辨率”来解决此问题,它会自动生成相对应的尺寸大小至values-1920x1080目录下。

上图中我们可以看到,在values-1920x1080中,width4px对应的是6px,而height2px对应的是3px,是因为在生成静态xml的时候就根据你的UI效果图的基础尺寸把其他分辨率上的尺寸给适配好了,所以,还是那句话,我们引用 android:layout_width="@dimen/width4px"   android:layout_height="@dimen/height2px"  就可以达到完美的适配效果。

为了帮助大家更好的理解,我再举个栗子,假设UI设计师有时候在720x1280上做效果图,有时候在1080x1920上做效果图,那该怎么应用呢?UI设计师在哪个屏幕分辨率上做标注,你就传入哪个屏幕分辨率目录下跟UI设计师标注的相对应宽高的值所对应的资源名称即可。

安卓设备有数不尽的各种奇葩分辨率,我们需要每个屏幕分辨率都生成xml文件吗?不需要,你可以选取你们app用户量排名前30的设备来做分辨率适配,然后另外也可以选取一些特定的分辨率就可以了,因为即使用户的设备找不到与之相匹配的大小时,它还会向下寻找与它相近的文件夹分辨率来取值,但是这里要注意了,如果找不到与之匹配的大小时,向下也没有声明比这更小的分辨率文件夹时,并且也没有设置默认的分辨率文件时,它可能会无情的向你报一个错:

Caused by: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: You must supply a layout_width attribute

Caused by: java.lang.UnsupportedOperationException: Binary XML file line #13: You must supply a layout_width attribute.

以防万一,我们还可以选择在res/values目录下新建默认分辨率。 

发布了83 篇原创文章 · 获赞 26 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览