1

画像のさまざまな部分がクリックされたときに、単一の画像が異なるナビゲーションを持つことが要件である Android アプリケーションを開発しています。例: 建物の全体像で、別のアパートをクリックして、そのアパートで提供されている設備 (ビルドアップ エリア、部屋数、バルコニー数、テラス (ペント ハウスの場合) など) を表示します。

以下の2つの可能性を考えたところ、

  1. 画像をスライスしてレイアウト xml にまとめます (単一の画像のように見えるように)。ユーザーがクリックすると、画像ビュー ID を使用して、どの部分がクリックされたかがわかります。

  2. 画像をスライスして (1 つの画像として見えるように) onclick イベントで html にまとめ、webview で html を読み込み、クリックを処理する JavaScript クラスを作成します。

上記の 2 つは、パーツが適切な長方形または正方形の形状ではないため、困難です。

ASP.Net にはこの目的のための ImageMap コントロールがありますが、Android にそのようなものはありますか?

4

2 に答える 2

1

Android でこれを行うためのコンポーネントはありませんが、簡単に作成できます。

public class ImageMap extends ImageView implements onClickListener 
{

  List<Rect> hotspot;

  public ImageMap(Context c)
  {
    super(c);
    hotspot = new List<Rect>();
    setOnClickListener(this);
  }

public void addHotSpot(Rect r)
{
   hotspots.add(r);
}


  public void onClick(Event e)
  {
     int currentPosition = 0;
     for(Rect spot : hotspot){
       if(spot.contains(e.getX(), e.getY()))
            triggerClickInHotSpotAtPos(currentPosition);
       currentPosition ++;
     }

  }

  public void triggerHotSpot(int hotspotIndex)
  {
   //TODO  do something useful like calling listener for this given hotspot etc ...
  }
}

これは完成した作品ではなく、疑似コードのようなものであることに注意してください。重要なのは、アイデアを理解することです。

于 2013-03-06T08:48:20.860 に答える
0

onTouchイベントハンドラーを利用することで、単一のImageViewでこれを行うことができます。

タッチイベントの座標を取得する方法の詳細については、 MotionEventのドキュメントを参照してください。

于 2013-03-06T08:43:14.423 に答える