码迷,mamicode.com
首页 > 移动开发 > 详细

关于Android的不同分辨率图片适配

时间:2016-05-13 03:38:25      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

看了几篇相关的博客,根据自己的实际开发,总结了一下。


首先要搞清楚,图片的分辨率单位是像素,也就是px,比如72x72的图片,就是长宽都是72px;手机屏幕的分辨率跟图片类似,但是它还有个很重要的指标:dpi,叫做像素密度,代表1英寸长度的屏幕上面显示的像素数量,其实说白了就是屏幕的清晰度,dpi值越大屏幕看上去越清晰。


为什么要适配?因为手机屏幕的dpi种类繁多,如果都用一种固定像素的图片,那么这张图片在低dpi值屏幕上就会显示的比高dpi值屏幕的大,当然,这个前提是按照原图尺寸显示,比如layout文件里面的wrap-content;如果是使用限制大小,比如30dp,开发过的人都知道,这样会造成图片的压缩和拉伸,压缩倒是没什么,拉伸的话图片就会失真看起来模糊了。所以在对视觉图片体验要求越来越高的环境下,就不得不做多屏幕适配了。dpi数值和drawable文件夹对应关系如下:

dpi范围 密度
0dpi ~ 120dpi ldpi
120dpi ~ 160dpi mdpi
160dpi ~ 240dpi hdpi
240dpi ~ 320dpi xhdpi
320dpi ~ 480dpi xxhdpi
480dpi ~ 640dpi xxxhdpi


我们都知道res文件夹下面的drawable文件夹是放置图片的,在eclipse里面系统已经根据不同dpi自动生成了ldpi、mdpi、hdpi、xhdpi、xxhdpi、xxxdpi等等文件夹,androidstudio里面需要自己创建,这些文件夹下面就是放置不同分辨率图片的,以上的顺序代表了手机屏幕的dpi值依次增大,我们也都知道系统在运行的时候会根据具体的手机屏幕到相对应的文件夹下面获取图片,但是现实往往是残酷的,通常的情况下给我们开发者的图片都只有一种分辨率的,如果我们粗暴的把这张图片复制粘贴到每个dpi的文件夹下面,就会出现以下各种情况(假如美工是按照1080x1920分辨率的手机屏幕标准给的图片,图片大小540x960,刚好占据屏幕一半面积):

1、如果是手机屏幕尺寸刚好是设计尺寸,系统会到xxhdpi文件夹下面获取图片,而且刚好显示的是设计尺寸;

2、如果手机屏幕是720x1280,那么这个图片所占的屏幕面积就不只一半了,宽度比例:540/720,长度比例:960/1280;

3、同理,如果手机屏幕是1440x2250,那么这个图片所占的屏幕面积就没有一半了。


到这里,肯定会有很多开发者也会这么做:就只把图片放到一个文件夹下面,其他不放。这样的的话,不管什么类型的屏幕都会到这个文件夹下面获取图片,但是问题是放到哪个文件夹下面呢?其实系统在运行的时候会根据文件夹所属的dpi值和屏幕的dpi值的比例来放大或者缩小图片,比如,如果手机屏幕是hdpi的,图片放在xxhdpi文件夹,系统会自动按照这两个dpi比例压缩图片,如果手机屏幕是xxxhdpi的,就会放大图片,这样的效果其实差不多刚好达到我们的要求;但是如果图片放到hdpi文件夹下面,hdpi屏幕显示就会超过一半大小(原理前面说过),如果xxhdpi的屏幕,系统就会按照比例放大图片,但是这张图片本身占这个屏幕一半的,这个时候就会超过一半了;如果图片放到xxxhdpi文件夹下面,同理xxhdpi的屏幕得到的图片会小于设计比例。


综上所述,如果你只有一套图片来做适配,最好是只放到一个dpi的文件夹下面,选择哪个文件夹呢,那就要根据目前市场的主流手机屏幕分辨率情况了,目前应该是xxhdpi屏幕占了主流,然后本着图片压缩总比拉伸好的原则,尽量选择高dpi的文件夹。






关于Android的不同分辨率图片适配

标签:

原文地址:http://blog.csdn.net/zm342021666/article/details/51338960

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!