我如何利用android中的焦点';s scalegestruedetector可以像android浏览器一样缩放吗?

我如何利用android中的焦点';s scalegestruedetector可以像android浏览器一样缩放吗?,android,canvas,scale,viewport,pinchzoom,Android,Canvas,Scale,Viewport,Pinchzoom,我有一个画布,我正在使用ScaleGetureDetector放大我的android应用程序。以下是我目前掌握的代码: //SCALING -------------------------------------------------- //get center of the viewport int centerX = xLoc+((int)(screenWidth/2*scaleFactor)); int centerY =

我有一个画布,我正在使用ScaleGetureDetector放大我的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.getFocusx()和detector.getFocusY()放大图像 焦点,就像android浏览器中的“收缩到缩放”功能一样

基本上,我需要调整视口的位置(xLoc和yLoc),使其看起来像缩放到缩放手势的焦点


我搞不懂这部分。如果有人知道我如何在不使用画布矩阵变换的情况下做到这一点(我在发布之前发现的许多主题中都使用了画布矩阵变换),我将非常感激!即使你能告诉我其他人做过类似的事情

单个
onScale
函数调用不能提供足够的信息来实现围绕明显焦点的缩放。您需要保留上一次
onScale
调用中
getFocusX()
getFocusY()
的值,并使用它们来影响下一次调用中的缩放,我不再参与实现此功能的项目,也没有访问源代码的权限。你还记得如果用户缩小,视图超出屏幕边界,它是如何管理的吗?我们有缩放限制如果用户缩小视图,然后移动到视图的一角,然后再缩小,在这种情况下,视图部分脱离屏幕