Android ImageView - Get coordinates of tap (click) regardless of scroll location or zoom scale

前端 未结 2 1509
清酒与你
清酒与你 2020-12-07 17:54

Background: I have an ImageView that I\'ve modified to be scrollable (drag) and zoom-able (pinch zoom). I used the exact technique mentioned in the \"Hello,

2条回答
  •  广开言路
    2020-12-07 19:00

    I found a solution to this using bits of info I've pieced together from other questions on this site. To give back to the community, I figured it was only right to share what I learned. Hope this helps somebody:

    // Get the values of the matrix
    float[] values = new float[9];
    matrix.getValues(values);
    
    // values[2] and values[5] are the x,y coordinates of the top left corner of the drawable image, regardless of the zoom factor.
    // values[0] and values[4] are the zoom factors for the image's width and height respectively. If you zoom at the same factor, these should both be the same value.
    
    // event is the touch event for MotionEvent.ACTION_UP
    float relativeX = (event.getX() - values[2]) / values[0];
    float relativeY = (event.getY() - values[5]) / values[4];
    

    Thanks to these sources: source 1 and source 2

提交回复
热议问题