2011-08-04 2 views
3

Touch of Imageでx、y座標を取得しようとしています。ですから、触れられたときにImageのx、y座標を取得する方法を教えてください。前もって感謝します。OnTouch()を使用して画像にタッチしたことを確認するには

マイコード - これにより

public class MovableObject extends ImageView implements OnTouchListener{ 

    Bitmap myBmp; 
    Paint myPaint = new Paint(); 
    int MoveX = 0; 

    public MovableObject(Context context,int moveObject,Bitmap myBmp) { 
     super(context); 
     super.setClickable(true); 
     this.myBmp = myBmp; 
     myPaint.setColor(Color.WHITE); 
     this.MoveX = moveObject; 
     setOnTouchListener(this); 
    } 
    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.drawBitmap(myBmp, MoveX, 100, myPaint); 
    } 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 

     switch (event.getAction() & MotionEvent.ACTION_MASK) { 

      case MotionEvent.ACTION_DOWN: 
       System.out.println("down...."+event.getX()+" "+event.getY()); 
      case MotionEvent.ACTION_MOVE: 
     } 
     return true; 
    } 
} 

私は私の画像をクリックすると、yと私は、xを取得しています、私はクリックのy座標が、私は、xを取得したいです。

答えて

2

は、私は別の方法を発見し、私はちょうどビューのすべての4つの座標を含むRectをインスタンスを返すメソッドを作成しRect

を使用して、任意のビューのためのタッチを検出するための最善の方法を考える

private Rect getLocationOnScreen(View mView) { 
     Rect mRect = new Rect(); 
     int[] location = new int[2]; 

     mView.getLocationOnScreen(location); 

     mRect.left = location[0]; 
     mRect.top = location[1]; 
     mRect.right = location[0] + mView.getWidth(); 
     mRect.bottom = location[1] + mView.getHeight(); 

     return mRect; 
    } 

そして、単にあなたの活動にonTouchEvent(MotionEvent event)をオーバーライドして、あなたが触れたりされていない検出したい任意のビューの座標をチェックし、

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    int x = (int) event.getX(); 
    int y = (int) event.getY(); 

    if (event.getAction() == MotionEvent.ACTION_DOWN && 
             getLocationOnScreen(imageview).contains(x, y)) { 
      Toast.makeText(getApplicationContext(), 
              "ImageView Touched", Toast.LENGTH_LONG).show(); 
    } 
    return super.onTouchEvent(event); 
} 
0

これらは、画像を持っていると仮定して画像ビューから呼び出すことのできる方法の一部です。実験してみると、私はあなたが必要とするものを手に入れることができます。

ImageView iv; 
iv.setOnTouchListener(new OnTouchListener() {   
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    event.getX(); 
    event.getX(pointerIndex) 
    event.getXPrecision() 
    return true; 
} 
}); 
+0

私はこれをやっていますが、触った画像のx、y座標を取得したいと思います。 –

0

これを試してみてください。..

ImageView.setOnTouchListener(new View.OnTouchListener(){ 
@Override 
    public boolean onTouch(View v, MotionEvent event) 
    { 
     if(event.getAction()==MotionEvent.ACTION_DOWN) 
     { 
      float x = event.getX(); 
      float y = event.getY(); 
     } 
    return true; 
    } 
} 
+0

私はこれをしましたが、画像がタッチされたときにx、yの座標を取得したいと思います。 –

+0

私はそれを得るが、直接的な方法があるかどうか私にはわからない。画面の原点に対する画像(上、左)(x、y)に関連する値を計算することはできます。私たちが直接的な方法を持っていればその価値は確かです。 – Samuel

+0

これを使用すると、TouchでImageViewのX-Y位置を取得できます。 –

0

あなたがイメージを描画するとき、あなたは、あなたが使用することができ、画面に画像領域を取得することができ、画像の座標を取得する直接することはできません@CapDroid画像の座標を取得する方法

+0

どのようにしてイメージ領域を取得できますか? –

6

MoveX - ビューの開始座標xです。
MoveY - これは、ビューの開始座標です。
imgHeiht - 画像の高さは です。
imgWidth - イメージの幅です。

event.getX() - これは、あなたのX座標の実際の位置です。

event.getY() - これはあなたのY座標の実際の位置です。

if(MoveX <= event.getX() && event.getX()<= (MoveX+imgWidth) && (MoveY <= event.getY() && (event.getY() <= MoveY+imgHeight))){ 
    System.out.println("down...."+event.getX()+" "+event.getY()); 
    } 

これはあなたを助けるかもしれません。

関連する問題