android学习笔记

【Android】Android适配多分辨率

2016-10-20  本文已影响0人  heheworld

老生常谈的话题了。写下来帮助自己巩固理解记忆。

基础知识

density: The logical density of the display.  密度比例值,当前dpi/160 就对应这个值

Dip (Device-independent pixel)  同dp,可作长度单位,不同设备有不同的显示效果,

这个和设备硬件有关,在dpi(像素密度)为160dpi的设备上 1dip = 1px

Dpi (dots per inch)  每英寸的密度值,该值对应于DisplayMetrics类中属性densityDpi的值

适配方式

在values中根据需要适配的分辨率机型,在res目录下新建不同的文件夹(命名为values-xxhdpi-1920x1080,values-xhdpi-1280x720...),

写对应的dimens.xml文件

在res/values/目录下的dimens.xml文件中,我们默认1px=1dp的。可以写成<dimen name="dp_1">1dp</dimen>

那么在values-xxhdpi-1920x1080文件夹下,

因为hdpi 屏宽默认为480px.  densityDpi为240.xxhdpi-1920x1080下 屏宽默认为1080px. 

densityDpi为480.

在 hdpi下 1dp = 1px;

那么在xxhdpi-1920x1080下, (1080/480)/(480/240) = 9/8 dp 即对应 hdpi 中的 1dp ,dimens.xml文件中写成<dimen name="dp_1">1.12dp</dimen>

同理 在xhdpi-1280x720下,(720/320)/(480/240) = 9/8 dp 即对应 hdpi 中的 1dp,

dimens.xml文件中写成<dimen name="dp_1">1.12dp</dimen>(跟xxhdpi-1920x1080一样的)

如果在 hdpi-1920x1080下呢,套用公式即可 (1080/240)/(480/240) = 9/4 dp,

dimens.xml文件中写成<dimen name="dp_1">2.25dp</dimen>

其他不同分辨率以及density同样可以推出,不作赘述。

布局文件中使用格式:

```

<View

android:layout_width="match_parent"

android:layout_height="@dimen/dp_1"/>

```

上一篇下一篇

猜你喜欢

热点阅读