Photoview - 我想获得放大后的相对x和y坐标

问题描述 投票:0回答:1

我正在使用 Android Studio 3 开发一个应用程序。这个应用程序有一个平面图图像和上面的网格。两者都通过 https://github.com/chrisbanes/PhotoView 使用 Canvas 添加到 PhotoView 中。

场景1:不放大, 当用户单击网格的某个单元格时,单击的单元格将被涂成黑色。这个没有问题。

场景2:放大后, 当用户单击网格的某个单元格时,该单元格将被绘制为黑色但不同的单元格,而不是单击的单元格。

public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {
                int column = (int) (event.getX() / cellWidth);
                int row = (int) (event.getY() / cellHeight);                    

                if (column < numColumns && row < numRows) {
                    cellChecked[column][row] = !cellChecked[column][row];                        
                    drawGrid();                        
                }
            }
return false;
}

所以,问题出在场景 2 上。 PhotoView 放大后,单击的单元格应该被涂成黑色。

java android image-manipulation
1个回答
0
投票

您可以使用此

Kotlin
代码:

val displayRect = photoView.displayRect

val relativeX = ((event.x - displayRect.left) / displayRect.width())
val relativeY = ((event.y - displayRect.top) / displayRect.height())
© www.soinside.com 2019 - 2024. All rights reserved.