1

我准备了很多很多教程,我已经第三次阅读http://developer.android.com/guide/practices/screens_support.html,但我仍然不知道如何设置布局以兼容多个屏幕.

在 android 文档上我发现了这个:

例如,layout_width="100dp" 的视图在中等密度屏幕上测量为 100 像素宽,系统在高密度屏幕上将其缩放到 150 像素宽,因此视图在屏幕上占据大致相同的物理空间.

好的,让我们看一个例子: 在此处输入图像描述

如您所见,分辨率相同(480x800),但视图直到结束才填满。我知道我应该使用 fill_parent 或 match_parent,但这仅用于测试目的。

XML 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:weightSum="100"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="320dp"
            android:layout_height="0dp"
            android:layout_weight="45"
            android:background="@drawable/bg_red" >

        </RelativeLayout>

        <RelativeLayout
            android:layout_weight="10"
            android:layout_width="fill_parent"
            android:layout_height="0dp" >
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="320dp"
            android:layout_height="0dp"
            android:layout_weight="45"
            android:background="@drawable/bg_blue" >

        </RelativeLayout>

    </LinearLayout>

</RelativeLayout>
4

1 回答 1

4

Dp 或 dip ( density-independent pixels) 将设备的密度考虑在内。与密度无关的像素的目的是在任何密度的屏幕上以相同的物理尺寸显示视图。

下降等于多少实际像素取决于您设备的密度:

  • 如果您有 mdpi 设备,则 1 dpi 等于 1 像素(因子 = 1)
  • 在 hdpi 设备上,一个 dpi 是两个像素,其物理尺寸应该与 mdpi 上的一个像素大致相同。(因子 = 2)

这一切在实际设备上变得更加清晰:

您的 480*800 hdpi 设备的物理尺寸会比 480*800 mdpi 设备小。因此,当视图填满 hdpi 设备的屏幕时,具有相同物理尺寸 (dp) 的视图不会填满 mdpi 设备的屏幕。

于 2013-07-27T10:36:21.490 回答