Как я могу проверить, что изображение коснулось с помощью OnTouch () - PullRequest
3 голосов
/ 04 августа 2011

Я пытаюсь получить координаты x, y на Touch of Image и на этом я хочу выполнить какое-то действие.Итак, может кто-нибудь сказать мне, как получить координаты X, Y изображения, когда он коснулся.Заранее спасибо.

Мой код -

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;
    }
}

Таким образом я получаю координаты x, y, где я нажимаю, но хочуполучить х, у, когда я нажму на свое изображение.

Ответы [ 5 ]

6 голосов
/ 04 августа 2011

MoveX - это начальная x-координата вашего взгляда.
MoveY - Это начальная координата y вашего взгляда.
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());
    }

Это может помочь вам.

2 голосов
/ 23 июля 2014

Я нашел другой способ, и я думаю, что это лучший способ обнаружить касание для любого вида, используя 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 голосов
/ 04 августа 2011

попробуйте это ..

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 голосов
/ 04 августа 2011

вы не можете напрямую получить координаты изображения, когда вы рисуете изображение, вы можете получить область изображения на экране, затем вы можете использовать метод @CapDroid, чтобы получить координаты изображения

0 голосов
/ 04 августа 2011

это некоторые из методов, которые вы можете вызывать из представления изображения, если у вас есть это изображение. попробуйте поэкспериментировать и вы мне получите то, что вам нужно.

ImageView iv;
iv.setOnTouchListener(new OnTouchListener() {           
@Override
public boolean onTouch(View v, MotionEvent event) {
    event.getX();
    event.getX(pointerIndex)
    event.getXPrecision()
    return true;
}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...