1、关于布局适配建议
一、不要使用绝对布局
二、尽可能使用match_parent 而不是fill_parent 。
三、可以使用权重的地方尽可能使用权重(android:layout_weight)
四、若是是纯色背景,尽可能使用android的shape 自定义。
五、若是须要在特定分辨率下适配,能够在res目录上新建layout-HxW.xml的文件夹。好比要适配1080*1800的屏幕(魅族MX3采用此分辨率)则新建layout-1800x1080.xml的文件夹,而后在下面定义布局。Android系统会优先查找分辨率相同的布局,若是不存在则换使用默认的layout下的布局。
2、术语和概念
四种屏幕尺寸分类:: small, normal, large, and xlarge
四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
须要注意的是: xhdpi是从 Android 2.2 (API Level 8)才开始增长的分类.
xlarge是从Android 2.3 (API Level 9)才开始增长的分类.
DPI是“dot per inch”的缩写,每英寸像素数。
通常状况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。
3、如何作到自适应屏幕大小呢?
1)界面布局方面
须要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,好比界面中顶部和底部的布局,不会随着屏幕大小变化,相似windos窗口的title bar),layout-small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间)
2)图片资源方面
须要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
Android有个自动匹配机制去选择对应的布局和图片资源
4、两种获取屏幕分辨率信息的方法:
DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
//这里获得的像素值是设备独立像素dp
//DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 这样得到的参数信息不正确,不要使用这种方式。
不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。这个获得的宽和高是空的。