1

ランダムな画像を使用するAndroid用のゲームを開発しています。私の問題は、その画像ビューに特定の画像があるときはいつでも(たとえば、Image1 idがランダムに生成されます) 、Image1が画像ビューに表示されるようになったことを示すメッセージを表示しImageViewたいことです。TextViewif条件を使用して、と言って実行できることを知っています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配列ではなく)作成し、ランダムに1つを選択する場合は、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 に答える