在Android中有一个与屏幕分辨率和大小无关的度量吗?

时间:2012-07-06 10:32:40

标签: android

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

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

我们是否有类似屏幕尺寸的10%。程序员这样做是否常见?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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);
}

答案 2 :(得分: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.