Android屏幕适配解决方案

2018-01-05  本文已影响291人  heyzhuyue

Android屏幕适配解决方案

一、屏幕相关基本概念

1.屏幕分辨率

手机在横向和纵向上的像素点数总和,单位是像素(pixel),1px = 1像素点,举个例子,1080x1920,即宽度方向上有1080个像素点,在高度方向上有1920个像素点。

2.屏幕尺寸

屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米
,比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等

3.屏幕像素密度(dpi)

屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。假设1英寸上像素点为160个,那么该屏幕像素密度为160dpi,同理可知其余屏幕像素密度。

为简便起见,Android 将所有屏幕密度分组为六种通用密度: 低、中、高、超高、超超高和超超超高。

image

4.屏幕相关单位

5.屏幕密度无关像素dp(dip)

Density Independent Pixels,即密度无关像素。
dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像素,上面我们说过,dpi是屏幕像素密度,假如一英寸里面有160个像素,这个屏幕的像素密度就是160dpi,那么在这种情况下,dp和px如何换算呢?在Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。

6.屏幕适配之图片适配

image image

在设计图标时,对于5种主流的像素密度(mdpi,hdpi,xhdpi,xxhdpi和xxxdpi)应按照2:3:4:6:8的比例进行缩放。例如一个启动图片ic_launcher.png,它在各个像素密度文件夹下大小为:

1.存在问题

2.解决方法

二、限定符

1.尺寸限定符

2.最小宽度限定符(在Android3.2版本及之后版本)

3.布局别名

这样会导致多个文件夹下出现相同命名的xml文件,为了解决这个问题,我们使用了布局别名的方式:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <item name="main" type="layout">@layout/activity_main</item>
    </resources>
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <item name="main" type="layout">@layout/activity_twopanes</item>
    </resources>
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <item name="main" type="layout">@layout/activity_twopanes</item>
    </resources>

4.屏幕方向限定符

5.屏幕适配之dimen适配

即使使用dp,依然不能解决屏幕分辨率的适配问题,我们可以针对不同的屏幕创建不同的dimen值,因此我们需要根据不同屏幕创建相应的values文件夹以及dimens.xml文件

    <resources>
     <dimen name="button_length_1">180dp</dimen>
     <dimen name="button_length_2">160dp</dimen>
    </resources>
    <resources>
     <dimen name="button_length_1">113dp</dimen>
     <dimen name="button_length_2">100dp</dimen>
    </resources>

特别提示:此dimen适配方式也适用于layout,values资源文件

三、参考文章

上一篇 下一篇

猜你喜欢

热点阅读