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,
You can also calculate the inverse matrix and use the mapPoints() method:
// Get the inverse matrix
Matrix inverseMatrix = new Matrix();
matrix.invert(inverseMatrix);
// Transform to relative coordinates
float[] point = new float[2];
point[0] = e.getX();
point[1] = e.getY();
inverseMatrix.mapPoints(point);
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