0

独自のカスタムビューを作成しようとしています。現在、特定のx座標とy座標に画像を描画してから、同じような画像をさまざまな場所に繰り返し描画しています。

描画される画像の各インスタンスにボタンを作成できるようにしたいと思います。1つの画像をクリックすると、選択した画像によって異なることが発生します。

どうすればこれを実装できますか?

画像とボタンの組み合わせごとに異なるビューを作成してから、onClickイベントを設定する必要がありますか?


もう少し明確にしようと思います。六角形(プレーヤーごとに異なる種類の地形)を使用してマップを作成しようとしています。描画する方法を理解しました(ここを参照してください。表示する境界線があります)。どの地形が誰によって所有されているか)

カスタムビュークラスを作成し、Canvasを使用して六角形を描画しました。ただし、六角形をボタンにして、選択した六角形と、対戦相手のスポットにどのように反応するかを区別できるようにする方法がわかりません。

プレイヤーに属するノード(六角形)を含み、配置する場所に六角形のみを描画するノードビューのグループを持つTerrainというViewGroupを作成することを考えていました。

問題は、特定の六角形が押された場合に、各ノードまたはviewGroup全体をボタンにする(またはonTouchを実行する)ことができるかどうかです。

4

2 に答える 2

1

私がよく理解しているなら、あなたはするべきです:

  • シンプルなボタンである1つのテンプレートmy_pictures.xml。
  • 次に、作成する画像の種類ごとに関数としてカスタムアダプタを作成します。つまり、必要なボタンに応じて、ボタンの背景値を変更する必要があります。次に、notifyDataSetChanged();を実行します。新しいボタンでコンテナを更新します。
  • リスナーの場合、buttonImagesを作成するときに、アクティビティまたはアダプターのいずれかに追加する必要があります。何が良いかわかりません。
于 2012-03-08T06:55:14.817 に答える
0

ご協力いただきありがとうございます!

私は自分が何をする必要があるかを理解しました。NodeViewクラスがあり、GameActivityクラスでは、相対レイアウトを使用して、配置したい場所のレイアウトパラメーターを設定しています。

    RelativeLayout rl = new RelativeLayout(this);

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(95,95);
    params.leftMargin = 10;
    params.topMargin = 10;


    params = new RelativeLayout.LayoutParams(95,95);
    params.leftMargin = 10+95*x;
    params.topMargin = 81+(71*y);
    rl.addView(new NodeView (this,0,0,1,1), params);

これは、必要な場所に物を追加するのに役立ちました。今では、x軸とy軸の両方で領域をスクロールする方法を理解しようとしています(ScrollViewを試しましたが、y軸でしかスクロールできません。私はそれを調べていますが)

于 2012-03-11T06:14:34.893 に答える