适用于普通屏幕尺寸的Android布局设计

时间:2014-12-02 20:11:30

标签: android resize relativelayout dpi screen-size

我是一个最狡猾的应用程序开发人员,我觉得我对android基础知识有很好的把握,但我努力的主要是应用程序设计。我了解如何针对不同的屏幕尺寸和密度进行开发。但我最挣扎的是每个正常尺寸和其他尺寸都涵盖了各自类别中的各种尺寸。我一直在寻找和搜索,并没有找到解决方案。

我遇到的主要问题是在使用eclipse进行设计时,我在设计时使用nexus进行设计看起来非常适合我想换到3.2 HVGA甚至nexus galaxy这样的小屏幕时我想要的大小的图像,我的图像的位置已移动。所以对于nexus来说看起来很完美的东西在其他一些正常的屏幕尺寸上看起来很糟糕。

可以采取哪些措施来确保图像是否紧挨着另一个图像,以便在不同的屏幕上保持这种状态。我将举例说明我正在进行的当前设计,我希望有人可以解释我做错了什么/我如何改进。

Nexus One Design:

enter image description here

3.2 HVGA:

enter image description here

  the xml generated:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="4"
    android:orientation="vertical" >

    <Button
        android:id="@+id/Button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/i1"
        android:text="Button" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/i2" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/Button1"
        android:layout_alignTop="@+id/Button1"
        android:layout_marginLeft="106dp"
        android:layout_marginTop="160dp"
        android:background="@drawable/i3" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button2"
        android:layout_alignBottom="@+id/button2"
        android:layout_alignRight="@+id/Button1"
        android:layout_marginRight="112dp"
        android:background="@drawable/i4" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button3"
        android:layout_alignLeft="@+id/button3"
        android:background="@drawable/i5" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

您需要为每个屏幕分辨率创建不同的图像,并将它们放入相应的drawable文件夹drawable--hdpidrawable-mdpidrawable-xhdpi等。另外请确保您在dp文件中使用的xml,您看来是这样。请确保你总是这样做。

设计不同的屏幕可能很棘手,因为您必须创建4到5次相同的图像。

此外,请确保您在实际手机上进行测试,因为模拟器并不总能为您提供准确的布局。

答案 1 :(得分:0)

尝试为侧面按钮添加另一个布局以将它们组合在一起,然后将该布局居中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/RelativeLayout1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:columnCount="4"
                android:orientation="vertical"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true">

    <Button
        android:id="@+id/Button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/i1"
        android:text="Button" />

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/RelativeLayout2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true">

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="false"
            android:layout_alignParentTop="true"
            android:background="@drawable/i2"
            android:layout_alignParentLeft="true"/>

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/i3"
            android:layout_below="@+id/button1"
            android:layout_alignParentLeft="true"/>

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/i4"
            android:layout_below="@+id/button4"
            android:layout_toRightOf="@+id/button2"/>

        <Button
            android:id="@+id/button4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/i5"
            android:layout_toRightOf="@+id/button2"
            android:layout_alignParentTop="true"/>
    </RelativeLayout>
</RelativeLayout>