2012-03-29 62 views
0

我有一个活动,我有两个imageViews。OnClick和onTouch

这对imagesViews有onClickListener,因为我需要知道哪个imageView被点击。当我点击选择图片后我得到了点击图片的结果。

我知道需要相同的结果,但我需要知道在哪里exacly我点击这张图片。我需要这个imageView被点击的精确坐标。我知道在onTouch方法中,我有我需要的功能。

我可以在onTouch上更改onClick方法吗?或者在onClick上可以获得精确的坐标吗?

+0

您可以使用onTouch事件......是指该链接 [1]:http://stackoverflow.com/questions/9122679/difference-between-ontouch-and-onclick-android – 2012-03-29 10:02:59

回答

4

没有必要为你使用onClick事件,因为你可以轻松地捕获使用onTouch回调的点击。点击是一个一个ACTION_DOWN动作,几个ACTION_MOVE动作和一个ACTION_UP动作的序列。这些可以使用event.getAction()方法获取。如果您收到ACTION_DOWN事件,然后收到ACTION_UP事件 - 这意味着用户刚刚点击了您的View。您还可以测量这些事件之间花费的时间,以确保它是一个简单的点击,而不是一个很长的点击。当然,您可以使用event.getX()event.getY()方法来获得确切的接触点。希望这可以帮助。

3

你可以使用onTouch()用于获取触摸坐标的方法

touchView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     System.out.println("Touch coordinates : " + 
      String.valueOf(event.getX()) + "x" + String.valueOf(event.getY())); 
      return true; 
    } 
});