-1

我正在使用 320*480 大小的相对布局来定义布局。我在定义元素的长度和宽度时使用“dp”。但是,当我尝试使用不同的尺寸进行检查时,例如 1024*600 或 480*800。我得到一个奇怪的输出。

我需要在所有尺寸中获得与 320*480 尺寸相同的输出。

以下是我遵循的布局。请帮助我..

提前致谢。

在此处输入图像描述

布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@drawable/background"
android:gravity="top" >

<RelativeLayout
    android:id="@+id/rl1"
    android:layout_alignParentLeft="true"
    android:layout_width="120dp"
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <RelativeLayout
        android:id="@+id/rl1A"
        android:layout_alignParentLeft="true"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >

    <ImageButton
        android:id="@+id/imOption1" 
        android:layout_centerHorizontal="true" 
        android:layout_centerVertical="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/> 

     </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl1B"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl1A"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption2"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/>
    </RelativeLayout>


    <RelativeLayout
        android:id="@+id/rl1C"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl1B"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption3" 
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp"  
        android:background="@drawable/kite" />
    </RelativeLayout>

</RelativeLayout> 

<RelativeLayout
    android:id="@+id/rl2"
    android:layout_toRightOf="@+id/rl1"
    android:layout_width="120dp" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" >     


    <RelativeLayout
        android:id="@+id/rl2A"
        android:layout_alignParentLeft="true"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >

    <ImageButton
        android:id="@+id/imOption4" 
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/> 
     </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl2B"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl2A"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption5"
        android:layout_below="@+id/imOption4"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/>
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl2C"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl2B"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption6"
        android:layout_below="@+id/imOption5"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp"  
        android:background="@drawable/kite" />
    </RelativeLayout>
</RelativeLayout>

<RelativeLayout
    android:id="@+id/rl3"
    android:layout_toRightOf="@+id/rl2"
    android:layout_width="120dp"
    android:layout_height="wrap_content" 
    android:orientation="vertical" >    

    <RelativeLayout
        android:id="@+id/rl3A"
        android:layout_alignParentLeft="true"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption7" 
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/> 
    </RelativeLayout>


    <RelativeLayout
        android:id="@+id/rl3B"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl3A"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption8"
        android:layout_below="@+id/imOption7"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/>
    </RelativeLayout>



    <RelativeLayout
        android:id="@+id/rl3C"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl3B"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption9"
        android:layout_below="@+id/imOption8"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp"  
        android:background="@drawable/kite" />
    </RelativeLayout>
</RelativeLayout> 

<RelativeLayout
    android:id="@+id/rl4"
    android:layout_toRightOf="@+id/rl3"
    android:layout_width="1dp"
    android:layout_height="fill_parent"
    android:background="#000000"   >     
</RelativeLayout>  

<RelativeLayout
    android:id="@+id/rl5"
    android:layout_width="240dp"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/rl4" >

    <ImageView
        android:id="@+id/ivDisplayArea"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:background="@drawable/kite"/>  

    <ImageButton
        android:id="@+id/bQuestion" 
        android:layout_marginTop="15dp"
        android:layout_marginLeft="10dp"
        android:layout_below="@+id/ivDisplayArea" 
        android:layout_alignParentLeft="true"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@drawable/question"  />

    <ImageButton
        android:id="@+id/bNext" 
        android:layout_marginTop="15dp"
        android:layout_marginLeft="30dp"
        android:layout_below="@+id/ivDisplayArea"
        android:layout_toRightOf="@+id/bQuestion"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@drawable/next"/>

</RelativeLayout>


<RelativeLayout
    android:id="@+id/rl6"
    android:layout_width="360dp"
    android:layout_height="1dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/rl1"  
    android:background="#000000">
</RelativeLayout>

<RelativeLayout
    android:id="@+id/rl7"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/rl6"
    android:layout_toLeftOf="@+id/rl4" >

     <TextView
         android:id="@+id/tvRewardAccount"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:gravity="center"
         android:text="Reward Account"
         android:textColor="#000000"
         android:textStyle="bold" />

             <ImageButton
                 android:id="@+id/bReward1"
                 android:layout_marginLeft="16dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp"
                 android:layout_below="@+id/tvRewardAccount"
                 android:background="@drawable/lollipop" /> 

             <ImageButton
                 android:id="@+id/bReward2"
                 android:layout_width="28dp"
                 android:layout_height="28dp"
                 android:layout_marginLeft="4dp"
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward1"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward3"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward2"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward4"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward3"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward5"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward4"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward6"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward5"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward7"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward6"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward8"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward7"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward9"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward8"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward10"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_marginLeft="4dp"
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward9"
                 android:background="@drawable/lollipop" />


</RelativeLayout>

</RelativeLayout>
4

3 回答 3

0

当您在与密度无关的像素中定义尺寸时,这是为了使如此定义的对象在不同密度的屏幕上或多或少具有相同的物理尺寸。我怀疑您发布的图像是像素尺寸较小的屏幕特写镜头,以及像素尺寸较大的屏幕的更远视图;如果您将两个屏幕并排放在桌子上并拍摄物理设备,我怀疑您的图像大小大致相同。您的大屏幕不仅有更多像素,而且有更多与密度无关的像素,因此以 dp 表示的特定尺寸的图像将占据该屏幕的较小百分比,尽管它可能与物理尺寸大致相同(例如, 以英寸来算)。

您似乎期望使用 dp 单位定义图像会导致它们占据物理屏幕的相同百分比,但这不是这些单位的目的。事实上,由于不同的屏幕具有不同的纵横比(宽高比),这种行为会导致图形失真。

考虑使用 fill_parent 将最外层布局缩放到屏幕大小。您可以将该外部布局设置为显示器左侧和右侧的水平配置 LinearLayout,使用 layout_weight 将每个宽度定义为百分比。然后,您可以嵌套一个垂直配置的 LinearLayout 作为此水平布局的第一个元素,顶部包含左侧 3x3 图像的 GridView,每个图像在其包含的正方形内以保持其纵横比的方式缩放,并且很快。

于 2013-03-24T19:52:27.613 回答
0

您的可绘制对象是否足够大以支持更高的分辨率?默认情况下,Android 不会放大图像。

您还可以使用基于显示尺寸的尺寸 - Android 资源管理非常适合。以下页面可能会对您有所帮助。

http://android-er.blogspot.de/2010/04/how-to-define-dimension-in-android.html http://developer.android.com/guide/practices/screens_support.html

于 2013-03-24T18:58:57.530 回答
0

您不能将布局设置为静态。您应该在代码端获取设备的屏幕尺寸并根据此尺寸设置布局。在这种情况下,您需要多个 xml 布局,您应该根据屏幕大小在代码中设置它。

于 2013-03-24T19:08:59.727 回答