1

以下の画像の赤いスポットへのタッチを検出する必要があるため、スポットへのタッチ後にアクションを実行できます。タッチ座標を検出し、赤い点と一致するかどうかを確認する必要があると思います。しかし、どうすれば赤いスポットの位置を検出できますか? 出来ますか?注: 役立つ場合は画像形式を選択できますが、おそらくビットマップで作業する必要があります。

プログラムでドット位置を取得する必要があります。画像を受け取りました。タッチ イベントのオン ドットを処理する必要があります。しかし、ドット位置が異なる別の画像を受け取ることができます

すべての考えをありがとう!

ここに画像の説明を入力

4

3 に答える 3

3

私が見る最も簡単な解決策は次のとおりです。

1-デバイスの画面サイズや解像度によって変わる可能性があるため、imageViewのサイズを取得します。

int IVwidth = imageView.getWidth();
int IVHeight = imageView.getHeight();

2- ビットマップの幅/高さを取得し、ビットマップの幅と imageView の幅の間の数学的関係 (比率) を見つけます。

float HeightRatio = (float)bm.getHeight() / (float)iv.getHeight();
float WidthRatio = (float)bm.getWidth() / (float)iv.getWidth();

(800*600) サイズのビットマップと (400*300) サイズの imageView があるとします。これにより、高さと幅の比率が (2.0) になります。

3- イベント ImageViewTouched が発生すると、イベントがタッチ座標を提供するため、タッチ座標を非常に簡単に取得できます。タッチ イベントのキャッチは非常に簡単で、これをビューに追加するだけで簡単に実装できることに注意してください。

    ImageView iv = (ImageView) findViewById(R.id.imageView1);
    iv.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {

            if(arg1.getAction() == MotionEvent.ACTION_UP)
            {
                int x = arg1.getX();
                int y = arg1.getY();
                int XonImage = x * WidthRatio;
                int YonImage = Y * HeightRatio;
                if(bm.getPixel(XonImage, YonImage) == Color.RED)
                {
                 // BINGOOOOOOO, do your magic here
                }
            }

            return false;
        }
    });

これ以上の情報については、ためらうことなく尋ねてください。乾杯

于 2012-11-04T16:37:33.903 に答える
1

FrameLayoutを使用します。ビュー階層は次のようになります。

<FrameLayout>
   <ImageView vineyard>
   <LinearLayout dots_holder>
      <ImageView dot1/>
      <ImageView dot2/>
      <ImageView dotn/>
   </LinearLayout>
</FrameLayout>

ブドウ園の画像にドットがオーバーレイされ、それぞれに OnClickListener を追加できます。各ドット ImageView の配置と寸法については、コードで動的な計算を行います。

于 2012-10-25T18:56:40.607 に答える
0

方法はたくさんあります。SemperFly のメソッドを使用できる場合があります。ビュー用の onTouchListeners もあり、座標が得られます。さまざまな画面密度を処理するために、座標を変換する必要がある場合があります。

また、画像をグリッドに分割することもできます。これにより、計算が簡素化または回避される場合があります。別のオプションは、画像をタイルに切り刻むことです。RelativeLayout のようなものを使用することもできます。

タッチ検出にはどの程度の精度が必要ですか?

于 2012-10-25T20:06:26.657 に答える