2011-12-05 47 views
0

アンドロイドの特定の位置に3つの画像をランダムに表示させたいと思います。 その画像をクリック可能にしたいと考えています。表示されている1つのイメージをクリックすると、カウンターが1つ増えます。 どうすればいいですか?Androidでは、画像をランダムに表示する方法はありますか?

+2

どこにいらっしゃいますか?あなたはイメージを読み込む方法を知っていますか?キャンバスに描いていますか?あなたはタッチイベントを聞く方法を知っていますか? – kostja

+0

私はキャンバスに描いていることを説明し、私の問題でそれをどのように使うことができますか? 「タッチイベントを聞く」はsetOnClickListenerと同じですか? – Ankita

+1

あなたの質問はサーバーの小さな質問に分割することができます:どのように乱数(位置)を取得するには?画面に画像を表示する方法は?画像上のclcikイベントにどのように反応するのですか?今、あなたはどこにいられますか? – Huang

答えて

0

次のコードを使用してキャンバスに画像を描画できます。

Rect dst = new Rect(x, y, x + imageWidth,y + imageHeight); 

//enter paint as the last arg to use bitmap filtering 
canvas.drawBitmap(myBitmap, null, dst, bitmapFilterSettings); 

myBitmapはbitmapFilterSettingsがPaintで、Bitmapあります。このコードをonDraw()メソッドに配置します。

イメージをランダムに配置するには、xyをランダム化してdst Rectに渡す必要があります。ランダムな画像を選択するには、ビットマップをListまたは配列に入れて、nextInt(listSize)メソッドをRandomとします。画像をランダムに表示したり消したりするにはnextBoolean()メソッドをRandomとし、trueを返す場合にのみ画像を描画します。これをあまり頻繁に行わないでください(Xフレームごとに1回)、画像がちらつきます。

編集:これを行うには、Activityのカウンタと決定の間のフレーム数を宣言できます。描画をオン/オフに切り替えるには、booleanフィールドも必要です。あなたもtimeBetweenDecisionをランダム化する可能性が意思決定の間に時間が予測しにくいようにするには

counter++; 
if(counter%framesBetweenDecision == 0){ 
drawImageFlag = random.nextBoolean(); 
} 
if(drawImageFlag){ 
//drawImage 
} 

:あなたのonDraw()では、このようになります。
/EDIT

リスナーでタッチイベントを処理し、クリックごとにランダムイメージ選択を呼び出すことができます。画像部分のみをクリック可能にしたい場合は、contains(x, y)メソッドを使用して画像を描画するのに使用しているRectの中に、MotionEvent(getX()メソッドとgetY()メソッドを使用できます)の位置を確認してください。

これはこれを達成する唯一の方法ではなく、非常に簡単な方法です。

+0

「これをあまり頻繁に行わないでください(Xフレームごとに1回)、画像がちらつきます。 これはどのように実装する必要がありますか? – Ankita

+0

@ user1080898私はこれを含めるために私の答えを編集しました – kostja

関連する問題