我有一个画布,我正在使用 ScaleGestureDetector 来放大我的 android 应用程序。这是我到目前为止的代码:
//SCALING --------------------------------------------------
//get center of the viewport
int centerX = xLoc+((int)(screenWidth/2*scaleFactor));
int centerY = yLoc+((int)(screenHeight/2*scaleFactor));
scaleFactor /= detector.getScaleFactor();
// Don't let the object get too small or too large.
scaleFactor = Math.max(1.0f, Math.min(scaleFactor, maxScaleFactor));
//Make sure the viewport is repositioned
xLoc = centerX-((int)(screenWidth/2*scaleFactor));
yLoc = centerY-((int)(screenHeight/2*scaleFactor));
//-----------------------------------------------------------
这非常适合放大和缩小我的画布。xLoc 和 yLoc 代表我的视口的左上角,相对于我正在绘制一部分的整个图像。不过,我对这段代码的问题是它放大到视口的中心。我希望能够使用detector.getFocuxX() 和detector.getFocusY() 来放大焦点,就像在android 浏览器中进行缩放一样。
基本上我需要调整视口的位置(xLoc 和 yLoc),以便它看起来像缩放到缩放手势的焦点。
我无法弄清楚这部分。如果有人知道如何在不使用画布矩阵转换的情况下做到这一点(我在发布此之前发现的许多主题中都使用过它),我将不胜感激!即使您可以将我指向其他做过类似事情的人。