在屏幕适配之前需要先了解的知识点
一,我们所见的屏幕情况
1,hdpi :480*800
2,ldpi :240*320
3,xhdpi:1280*720
4,mdpi:320*480
二,屏幕的基本概念
分辨率:长和宽总的像素点的总和
屏幕的大小: 英寸,手机的对角线
屏幕的分辨率和屏幕适配没有任何关系
三,文字的适配
1,在正常情况下可以使用sp
2,假如你是包裹内容的话不能用sp,要用dp
四,dpi:密度(屏幕的密度和适配息息相关)
ldpi:120dpi,像素密度与dp转换关系为:1dp = 0.75px
mdpi:160dpi ,像素密度与dp转换关系为:1dp = 1px
hdpi:240dpi,像素密度与dp转换关系为:1dp = 1.5px
xhdpi:320dpi,像素密度与dp转换关系为:1dp = 2px
xxhdpi:480dpi,像素密度与dp转换关系为:1dp = 3px
所以呢四者之比:3:4:6:8
我们知道的系统有一张默认的ic_launcher图片,他是怎样计算的呢?
也是根据我们上面的四者之比所计算出来的
结果分别为:
36*36
48*48
72*72
96*96
五, 那么我们都知道平常我们见到的手机的尺寸都是英尺计算的,那都怎么得到对应的像素呢?
勾股定理就是了,然后结合上面说的没英寸的像素点不难得到(这里说明点:为什么用勾股定理呢,因为比如4.0的手机,
4.0指的是对角线的宽度呀)
Android屏幕适配的五种方式
1,图片适配
图片一般主要要480*800就可以,
注意的点:
如果是作为背景的时候图片才会失真严重,把作为背景的图片单独切成1280*480,另一方面作为引导页面的图片也需要单 独切出来.因为当你运行的时候如果找不到匹配的图片,系统会自动向上找.比如480*320的没有的话,会自动的向480*640 找.找到最高的找不到,会回头向低的找.
这也就是为什么要写480*800了,一方面现在的屏幕这个用的最多,另一方面也是折中的思想.
2,通过多套layout来适配
注意的点:
如果是进行多套layout布局适配,必须把大的写在前面,layout-1280x720必须写在前面,还有就是中间是x不是*.
3,通过dimens进行适配
dimens本身是尺寸的意思,values-1280x720道理和上面一样需要写在最前面,
为什么dp不行呀?
因为你这个值是密度,屏幕的分辨率不同,总是会相差一点,但是会比像素好一点
4,通过代码进行适配
DisplayMetricsdisplayMetrics = new DisplayMetrics();//得到屏幕的矩阵显示
getWindowManager().getDefaultDisplay().getMetrics(diaplayMetrics);//
Constant.diaplayHeight*0.1f+0.5f
这里面加的0.5f,是为了四舍五入使用,比如你得到的值是:12.9999如果不加上0.5f的话那么他永远都只能是12,这样损失 的精度比较大
通过得到的屏幕的宽高动态的适配
5,通过线性布局的权重进行适配