1

例如,我们有像素。但是,像素不是恒定的。我想高分辨率的安卓屏幕会有更多的像素。

然后我们有密度,这似乎没有多大帮助。它不像像素那么精确,也不是恒定的。高分辨率将具有大量“密度”

我们是否有大约 10% 的屏幕尺寸。程序员这样做是否普遍?

4

3 回答 3

3

从不(或几乎从不)使用绝对像素。

如果您想处理屏幕布局的百分比,请使用layout_weight.

以下精简的 XML 布局文件显示了一个LinearLayout包含两个TextView小部件的垂直布局,每个小部件都包含在自己的LinearLayouts. 内部LinearLayouts将其高度设置为,0dp但“权重”(0.9 + 0.1)的“总和”等于 1,因此第一个内部 LinearLayout自动扩展到屏幕高度的 90%,而第二个得到 10%。

您使用的数字无关紧要……它们可以是 9 和 1 或 90 和 10 或 900 和 100 ……归结为总和以及每个代表的百分比。布局膨胀过程将完成其余的工作,您无需了解绝对像素。

<LinearLayout
    android:orientation="vertical"
    ... >
    <LinearLayout
        ...
        android:layout_height="0dp"
        android:layout_weight="0.9" >
        <Textview
            ... >
    </LinearLayout>
    <LinearLayout
        ...
        android:layout_height="0dp"
        android:layout_weight="0.1" >
        <Textview
            ... >
    </LinearLayout>
</LinearLayout>
于 2012-07-06T11:11:22.393 回答
0

答案是否定的,你没有那个。但是您可以制作自己喜欢的屏幕百分比。您将无法在 xml 中使用它,但您可以从代码中动态设置它。以下方法可用于获取屏幕的高度和宽度:

public static int getScreenHeight(Context context) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    return(metrics.heightPixels);
}

public static int getScreenWidth(Context context) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    return(metrics.widthPixels);
}
于 2012-07-06T10:44:19.600 回答
0

据我所知,没有这样的事情。

但是您可以使用自己的代码实现相同的功能。获取显示的宽度和高度,然后在设置布局参数之前对它们进行自己的操作。

    Display display = getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
    int height = display.getHeight();
    yourLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(
            (width/2), height/4)); // assuming that you want 50% width n 25% height of the display. 
于 2012-07-06T10:49:48.367 回答