如何使用相对布局制作适合所有屏幕尺寸的应用?

时间:2014-10-06 08:01:20

标签: android android-layout

如何使用相对布局制作适合所有屏幕尺寸的应用? 目前我正在使用按钮位置和尺寸的常数值,它只在HTC One S上看起来很好。这是我用于开发的设备。 我希望按钮位于每个显示器上的适当位置。

我在应用程序中有一个背景,那就是你可以在这里看到它的HUD:

Head Up Display

按钮和LED必须位于孔内的确切位置。它看起来像这样:

TRobotRC

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/hud"
android:orientation="horizontal"
android:splitMotionEvents="false"
android:windowEnableSplitTouch="false"
tools:context=".MainActivity" >

<ImageButton
    android:id="@+id/connect_button"
    android:layout_width="122sp"
    android:layout_height="122sp"
    android:layout_marginLeft="338dp"
    android:layout_marginTop="54dp"
    android:background="@drawable/connect_inactive"
    android:contentDescription="@string/connect_button_description" />

<ImageButton
    android:id="@+id/disconnect_button"
    android:layout_width="122sp"
    android:layout_height="122sp"
    android:layout_marginLeft="338dp"
    android:layout_marginTop="195dp"
    android:background="@drawable/disconnect_inactive"
    android:contentDescription="@string/disconnect_button_description" />

<ImageButton
    android:id="@+id/throttleup_button"
    android:layout_width="122sp"
    android:layout_height="122sp"
    android:layout_marginLeft="483dp"
    android:layout_marginTop="54dp"
    android:background="@drawable/throttleup_inactive"
    android:contentDescription="@string/throttleup_button_description" />

<ImageButton
    android:id="@+id/throttledown_button"
    android:layout_width="122sp"
    android:layout_height="122sp"
    android:layout_marginLeft="483dp"
    android:layout_marginTop="195dp"
    android:background="@drawable/throttledown_inactive"
    android:contentDescription="@string/throttledown_button_description" />

<ImageButton
    android:id="@+id/moveforward_button"
    android:layout_width="170sp"
    android:layout_height="160sp"
    android:layout_marginLeft="79dp"
    android:layout_marginTop="30dp"
    android:background="@drawable/control_forward_inactive"
    android:contentDescription="@string/moveforward_button_description" />

<ImageButton
    android:id="@+id/movebackward_button"
    android:layout_width="170sp"
    android:layout_height="160sp"
    android:layout_marginLeft="79dp"
    android:layout_marginTop="153dp"
    android:background="@drawable/control_backward_inactive"
    android:contentDescription="@string/movebackward_button_description" />

<ImageButton
    android:id="@+id/moveleft_button"
    android:layout_width="170sp"
    android:layout_height="160sp"
    android:layout_marginLeft="17dp"
    android:layout_marginTop="92dp"
    android:background="@drawable/control_left_inactive"
    android:contentDescription="@string/moveleft_button_description" />

<ImageButton
    android:id="@+id/moveright_button"
    android:layout_width="170sp"
    android:layout_height="160sp"
    android:layout_marginLeft="141dp"
    android:layout_marginTop="92dp"
    android:background="@drawable/control_right_inactive"
    android:contentDescription="@string/moveright_button_description" />

<ImageView
    android:id="@+id/led"
    android:layout_width="45sp"
    android:layout_height="45sp"
    android:layout_marginLeft="297dp"
    android:layout_marginTop="280dp"
    android:background="@drawable/led_inactive"
    android:contentDescription="@string/led_description" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:2)

不是对值进行硬编码,而是使用dimen文件来实现此目的。 为值指定不同的文件夹,例如values-large等,并创建维度文件并根据屏幕大小放置特定值。

对所有Layouts使用权重而不是给出常量值,因为权重是屏幕的%类型,默认情况下在清单支持屏幕视图中为true。

创建像这样的多屏幕尺寸布局文件夹

layout-smalllayout-largelayout-xlarge所以你将你的布局XML文件复制到这些文件夹中,现在你可以编辑指定的框宽度和大小。< / p>

这些链接将帮助您为多个屏幕创建应用程序:

  1. http://developer.android.com/training/multiscreen/screensizes.html

  2. http://developer.android.com/guide/practices/screens_support.html

  3. 这些是Android关于实现多种屏幕尺寸支持的官方文档。

    http://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:0)