【Android】Android适配多分辨率

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

基础知识


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"/>

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容