0

我一直在为 Android 开发一款记忆游戏,但我的布局有点问题。

对于每种类型的游戏(简单、中等和困难)我都有 3 种不同的布局,我在屏幕上需要匹配 4x4、5x5 或 6x6 图像。

我正在使用 ImageAdapter 来获取图像并填充用于在屏幕上显示图像的 GridView。

这是 Easy 游戏的 XML 文件(4x4 图像):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <RelativeLayout 
        android:id="@+id/mainBar"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:gravity="center">
         <TextView 
           android:id="@+id/player1"
           android:layout_alignParentLeft="true"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Player1 - "
           />

        <TextView 
           android:id="@+id/player1Score"
           android:layout_toRightOf="@+id/player1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="00 "
           />

          <TextView 
           android:id="@+id/player2Score"
           android:layout_alignParentRight="true"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="00"
           />

        <TextView 
           android:id="@+id/player2"
           android:layout_toLeftOf="@+id/player2Score"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Player2 - "
           />

    <Chronometer
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="02:00" />

    </RelativeLayout>


   <GridView
       android:id="@+id/gridview"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:layout_alignParentBottom="true"
       android:layout_below="@id/mainBar"
       android:gravity="center_vertical|center_horizontal"
       android:numColumns="4">
</GridView>



</RelativeLayout>

唯一的问题是,当我在具有小屏幕尺寸的模拟器上运行应用程序时,图像看起来会被拉伸......(参见 IMG#1)......当我真的想要看起来像这样的东西时......(见 IMG#2),在每个屏幕上,无论大小!

图片#1

图#2

我正在使用不同的资源(ldpi、mdpi、hdpi 的不同图像)。

4

2 回答 2

0

使用它来找到正确的物理屏幕尺寸:

if ((getResources().getConfiguration().screenLayout & 
    Configuration.SCREENLAYOUT_SIZE_MASK) == 
        Configuration.SCREENLAYOUT_SIZE_LARGE) {
    // on a large screen device ...

}

资料来源:如何使用代码确定设备屏幕尺寸类别(小、普通、大、xlarge)?

于 2012-06-27T02:40:19.173 回答
0

您遇到的问题是,当您支持多种屏幕密度时,您不支持多种物理屏幕尺寸。这就是为什么在较小的屏幕上您的图像看起来更大并开始扭曲的原因。

要解决这个问题,您可以为每种手机尺寸分别设置布局:小号、普通号、大号和超大号。

然而,由于这非常乏味,我倾向于使用线性布局和权重,以便布局 xml 可以在所有手机尺寸上进行缩放。

在这种情况下,您需要制作一个垂直线性布局,其中包含 4 个水平线性布局。

于 2012-06-27T02:13:58.037 回答