Android主要活动简单游戏模式,例如用于纸牌游戏

时间:2014-04-29 19:27:11

标签: android grid android-activity

我从来没有想过我会遇到这么多麻烦来完成这件事。

我希望显示的内容让我们说2行4列。 在每个单元格中是具有不同大小和不同宽高比的图片。 所有8个单元格都应该填满整个屏幕。

我现在想要在分辨率为1920x1080px的智能手机和分辨率为480x320px的智能手机上正确显示这些8张图像(缩小/缩放)。 在这两种情况下,8张图片应该填满整个屏幕。

有人可以如此友善并发布这几行代码吗?

或者我是否需要以编程方式执行此操作,检查屏幕分辨率,检查dpi然后重新缩放每个图像?

非常感谢

这对我不起作用:

    <GridLayout
        android:id="@+id/gridLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnCount="2"
        android:rowCount="2" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="left|top"
            android:src="@drawable/img1" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="left|top"
            android:src="@drawable/img2" />
    </GridLayout>

我使用

尝试了几乎任何一种组合

机器人:layout_width =&#34; match_parent&#34;  fill_parent或wrap_content

1 个答案:

答案 0 :(得分:0)

所以我终于开始使用它了,你是对的GridLayout由于某种原因似乎有点偏。然而,我编写并测试了以下代码,它可以满足您的需求。显然,您只需要将图像更改为您需要的图像。

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="2"
    android:orientation="vertical"
    android:id="@+id/grid">

    <RelativeLayout
        android:id="@+id/top_row"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:layout_weight="1"
        android:orientation="horizontal" />

    <RelativeLayout
        android:id="@+id/bottom_row"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:layout_weight="1"
        android:orientation="horizontal" />

</LinearLayout>   

然后您可以动态添加视图

RelativeLayout topLayout = (RelativeLayout) findViewById(R.id.top_row);
RelativeLayout bottomLayout = (RelativeLayout) findViewById(R.id.bottom_row);

Point point = new Point();
getWindowManager().getDefaultDisplay().getSize(point);
int width = point.x;
RelativeLayout.LayoutParams params;

    for(int i = 0; i < 8; i++){
        params = new RelativeLayout.LayoutParams(width/4, RelativeLayout.LayoutParams.MATCH_PARENT);
        ImageView image = new ImageView(this);
        image.setId(i+1);
        image.setVisibility(View.VISIBLE);
        image.setImageResource(R.drawable.ic_launcher);
        image.setScaleType(ScaleType.FIT_XY);

        if(i < 4){
            if(i == 0)
                params.addRule(RelativeLayout.ALIGN_LEFT);
            else
                params.addRule(RelativeLayout.RIGHT_OF, i);

            image.setLayoutParams(params);
            topLayout.addView(image);
        }
        else if(i >=4){
            if(i == 4)
                params.addRule(RelativeLayout.ALIGN_LEFT);
            else
                params.addRule(RelativeLayout.RIGHT_OF, i);

            image.setLayoutParams(params);
            bottomLayout.addView(image);
        }

    }

这应该按照你要求的那样去做:)