1

我正在为 android 开发一个游戏,我将在其中使用随机图像。我的问题是,只要该图像视图中有某个图像(例如,在 中随机生成的 Image1 id ImageView),我希望TextView显示一条消息,说明 Image1 现在可以在图像视图中看到。我知道可以使用 if 条件来完成,比如if imageview=imageview1, textview1.settext "blah blah blah".

我们怎么能这样做。如果我的问题不清楚,请询问更多详细信息,请求!!!

package com.random.image;

import java.util.Random;



import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;


public class RandomImageActivity extends Activity {

    /** Called when the activity is first created. */





private static final Random rgenerator = new Random();

private ImageView iv;

private static final Integer[] mImageIds = 
    { R.drawable.tailss, R.drawable.headss, };

@Override
public void onCreate(Bundle savedInstanceState)

{
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    final TextView t=(TextView) findViewById(R.id.textView1);

    Integer q = mImageIds[rgenerator.nextInt(mImageIds.length)];
    iv = (ImageView) findViewById(R.id.imageView1);
    changeImageResource();

    final Button b=(Button) findViewById(R.id.button1);
    b.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            AlertDialog a=new AlertDialog.Builder(RandomImageActivity.this).create();
            a.setTitle("Flip the Coin");
             a.setMessage("Click the button below to find which side of the coin you got");
             a.setButton("Try Your Luck", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int which) {
                  // here you can add functions

                 changeImageResource();





               }
            });
       a.setIcon(R.drawable.coin);
       a.show();


        }
    });
}

public void changeImageResource()
{

    int i = rgenerator.nextInt(2);
    iv.setImageResource(mImageIds[i]);

}
}
4

2 回答 2

2

我假设您是从已知的图像列表中随机选择一个图像。您可以改为定义一个数据结构,将图像 id 与标题字符串的 id 分组:

ImageData {
    int imageId;
    int captionId;
}

然后创建这些对象的数组(而不是图像 id 的 int 数组),当您随机选择一个时,使用 imageId 字段加载图像,使用 captionId 加载标题字符串。

编辑

你的代码有这个:

private static final Integer[] mImageIds = 
    { R.drawable.tailss, R.drawable.headss, };

我建议这样做:

private static final class ImageData {
    ImageData(int imageId, int captionId) {
        this.imageId = imageId;
        this.captionId = captionId;
    }
    int imageId;
    int captionId;
}

private static final ImageData[] mImageData = {
    new ImageData(R.drawable.tailss, R.string.tailss),
    new ImageData(R.drawable.headss, R.string headss)
};

然后,在您的代码中,您将执行以下操作:

public void changeImageResource()
{
    int i = rgenerator.nextInt(mImageData.length);
    ImageData data = mImageData[i];
    iv.setImageResource(data.imageId);
    t.setText(getString(data.captionId));
}
于 2012-06-14T15:49:47.213 回答
1

只需在 ImageView 上使用 setTag 和 getTag 方法,然后执行条件语句。不需要额外的数据结构。

例子。

imageView.setImageResource(mImageIds[i]);
imageView.setTag(mImageIds[i]);

然后做

if(imageView.getTag().equals(String.valueOf(mImageIds[i]))
{
    textView.setText("blabla");
}

甚至更好

imageView.setImageResource(mImageIds[i]);
imageView.setTag(mImageIds[i]);

然后

switch(Integer.valueOf(imageView.getTag()){
    case R.drawable.id1: textView.setText("bla1"); break;
    case R.drawable.id2: textView.setText("bla2"); break;
}
于 2012-06-14T16:25:44.710 回答