通过使用多种布局在Android中支持多种屏幕尺寸

时间:2014-03-05 07:04:41

标签: android android-layout layout multiscreen

我正在编写一个在720p屏幕上运行良好的应用程序。我想让这个应用程序在不同的屏幕尺寸上运行。我读了这篇文章:http://developer.android.com/guide/practices/screens_support.html

但我很困惑。我为不同的布局(layout-normal,layout-large,layout-xlarge)制作了3个文件夹,并在每个文件夹中放置了不同的XML文件。但有一些屏幕布局正常,我的应用程序在其中一些看起来不错,而在其他屏幕看起来很糟糕。例如,这些尺寸是正常的布局:(4.7“WXGA,4”WVGA,3.7“WVGA,...)但我的应用程序看起来很好4”和3.7“而其他类型看起来非常糟糕。

layout-normal文件夹中的my activity-main.xml是:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/backasli"
    android:orientation="vertical" >

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="100dp"
        android:paddingTop="140dp"
        android:stretchColumns="3" >

        <TableRow
            android:id="@+id/tableRow6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center" >

            <TextView
                android:id="@+id/txt1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="pray :"
                android:textColor="#031a7b"
                android:textSize="15sp" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center" >

            <TextView
                android:id="@+id/namaztxt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:textColor="#031a7b"
                android:textSize="20sp" />
        </TableRow>

        <TableRow android:gravity="center" >

            <Button
                android:id="@+id/buttonchange"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:background="@drawable/ubtn"
                android:text="change"
                android:textColor="#ffffff"
                android:textSize="20sp" />
        </TableRow>
    </TableLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:2)

Android提供了支持多种屏幕尺寸的非常好的方法。它被称为权重。您应该使用LinearLayout 权重并查看图形视图以了解您希望如何调整大小。

完全避免:

  1. 计算分辨率和屏幕尺寸。你最终会陷入混乱。
  2. dpi的多个布局。
  3. 相信我,我迄今为止开发的所有应用程序(12)都是使用所有平台上的1个布局文件的权重完成的。它有效,并且像奇迹一样工作。

    编辑:

    我也从不使用超过5dp的填充和10dp的边距。这样我就可以保持代码干净,Android权重可以处理我的可用空间。

    有关权重的更多信息,请查看this问题。从一开始就有很好的解释。

    再次编辑:

      

    想一想。你假设dp是&#34;相同&#34;就所有手机的物理毫米(毫米)而言。但事实并非如此。事实上,X和Y 1 dp可能意味着&#34; mm&#34;中的某些不同。 dp是&#34;不是&#34;是一致的。使用100dp等代码并设置硬编码宽度和高度时要小心。更糟糕的是,多个布局文件。你将会遇到许多代码维护噩梦。