您的位置:首页 > 移动开发 > Android开发

Android 屏幕适配

2014-12-23 17:18 260 查看
Android屏幕适配一直是android开发者的一个大问题,android手机屏幕分辨率良莠不齐,各种奇葩分辨率层出不穷,导致分辨率适配相当麻烦,今天就说说自己在开发和学习中学会的适配方面的方法概念。


一、关于布局适配建议


1、不要使用绝对布局

2、尽量使用match_parent 而不是fill_parent 。

3、能够使用权重的地方尽量使用权重(android:layout_weight)

4、如果是纯色背景,尽量使用android的shape 自定义。

5、如果需要在特定分辨率下适配,可以在res目录上新建layout-HxW.xml的文件夹。比如要适配1080*1800的屏幕(魅族MX3采用此分辨率)则新建layout-1800x1080.xml的文件夹,然后在下面定义布局。Android系统会优先查找分辨率相同的布局,如果不存在则换使用默认的layout下的布局。

6、关于长宽设置最好是3的倍数,最好是偶数。


二、基本概念


px : 英文单词pixel的缩写,意为像素,屏幕上的点。我们通常所说的分辨率如480X800就是指的像素。像素是最小的独立显示单位,px均为整数,不会出现0.5px的情况。

in : 英寸,是屏幕的物理尺寸,手机屏幕大小如1.6英寸、1.9英寸、2.2英寸,都是指的对角线的长度。

dpi:Dots
Per Inch的缩写, 每英寸点数,即每英寸包含像素个数。如320X480分辨率宽2英寸,高3英寸,
每英寸包含的像素点的数量为320/2=160dpi(横向)或480/3=160dpi(纵向),160就是这部手机的dpi

density : 屏幕密度,density和dpi的关系为
density = dpi/160。

dp : 即dip,设备独立像素,device
independent pixels的缩写。dp = density * px 。

sp
: 
和dp很类似,一般用来设置字体大小,和dp的区别是它可以根据用户的字体大小偏好来缩放。

四种屏幕尺寸分类::small,
normal, large, and xlarge
四种密度分类:ldpi
(low), mdpi (medium), hdpi (high), and xhdpi (extra high)(普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320)
三、获取屏幕分辨率和密度的方法

第一种:

DisplayMetrics
metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);

int width =metrics .widthPixels;
// 屏幕宽度(像素) 
int height =metrics .heightPixels;
// 屏幕高度(像素) 
float density =metrics .density;
// 屏幕密度(0.75 / 1.0 / 1.5) 
int densityDpi =metrics .densityDpi;
// 屏幕密度DPI(120 / 160 / 240) 

第二种:

Display mDisplay = getWindowManager().getDefaultDisplay();

int W = mDisplay.getWidth();

int H = mDisplay.getHeight();
四、其它说明
1、在xhdpi里面放一张120px*120px的图片,图片使用wrap_content设置长宽与设置长宽为60dp效果一样。只提供一套图片时,目前xhdpi是最好的选择,主分辨率是720P。

2、切图方面:

1  长宽最好是3的倍数(根据android的推荐logo图标的大小是48(mdpi),72(hdpi),96(xhdpi)得出的最小公约数)。

2  长宽最好是偶数。因为奇数在进行等比压缩的时候可能有问题。

3  根据上面两条,如果长宽是6的倍数最理想。

4  如果可以拉伸而不改变设计意图的情况下,比如纯色背景,则使用android的9path工具制作成.9的图片。

3、屏幕密度、像素和实际大小的比例关系。他们的关系是2:3,于是你需要按照1.5倍比例制作图标,比如你在480*800的设计稿上切下来一个20*20像素的图,那么你就需要制作一个等比放大成30*30像素的图标,这样同一个图标在480*800的屏幕和720*1280的屏幕上显示的实际大小才一样。同理,如果你需要适配xxhdpi则需要在20*20的基础上制作一个等比放大成40*40像素的图标。

4、关于图标的目录,480*800切下来的图我们放在drawable-hdpi目录下,按照2:3放大的图标放在drawable-xhdpi目录下,按照2倍放大的图标放在drawable-xxhdpi目录下。

android会根据手机的密度优先查找对应的目录的资源,如果没有这个文件夹,则查找与其最接近的对应密度文件夹。

5、demins的使用。demins在value文件夹下,相关配置可以在values-hpdi,values-mdpi,values-ldpi三种文件夹中的dimens.xml文件进行设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息