0

私はAndoirdの初心者です。

私の場合、画像の特定の部分をクリックすると onclick イベントがトリガーされるというシナリオがあります。onTouchが発火したときの位置を検出しようとしましたが、動作しますが、標準実装ではないと思うので、そのような場合のベストプラクティスは何ですか?

ありがとう。

ここに次のようなコードがあります:

imgView.setOnTouchListener((OnTouchListener) new OnTouchListener(){

public boolean onTouch(View v, MotionEvent event) { 
    if(isIn(event.getX(), event.getY(), 124,3,221,36)){ 
        ShowMemberInfo(R.string.app_m01); 
    } else if(isIn(event.getX(), event.getY(), 8,155,72,181)){
         .. 
    } 
    return true; 
} 
private boolean isIn(float x, float y, int fx, int fy, int tx, int ty) { 
    return x<tx && x > fx && y<ty && y>fy; 
}
4

3 に答える 3

0

onClickListener()ImageView に実装するだけです。

onClick イベントを実装する最も簡単な方法は、XML レイアウトandroid:onClickMe="methodName"内に含め<ImageView>、アクティビティ ファイル内でそのメソッドを定義することです。

例えば:

public void methodName(View v)
{
  ....
  ....

   // do whatever you want for click even ton imageview
}
于 2012-04-12T08:43:52.033 に答える
0

Try to use ImageButton

于 2012-04-12T09:14:38.203 に答える
0

ユーザーがタッチした位置 (ユーザーがタッチした ImageView からの相対位置) を検出したい場合は、MotionEvent オブジェクトからタッチ ポイントを取得できます。

ImageView のタッチ イベント リスナーを登録し、タッチ イベントがトリガーされたときに MotionEvent オブジェクトの getX() および getY() メソッドからタッチ ポイントの位置を取得してみてください。次に、長方形の領域を定義し、contains() を使用して、タッチ ポイントが領域内にあるかどうかを確認します。

ImageView img = new ImageView(this);
img.setOnTouchListener(new OnTouchListener(){

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Log.w("Hit test", "is hit? "+isIn(event.getX(),event.getY(),0,0,120,120));
        return false;
    }

});

private boolean isIn(float x, float y, int fx, int fy, int tx, int ty){
    return new Rect(fx,fy,tx,ty).contains((int)x,(int)y);
}

これがお役に立てば幸いです。:)

于 2012-04-12T09:24:51.457 に答える