gpt4 book ai didi

android - 如何利用 android 的 ScaleGestureDetector 中的焦点像 android 浏览器一样进行缩放?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:46 27 4
gpt4 key购买 nike

我有一个 Canvas ,我正在使用 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));
//-----------------------------------------------------------

这非常适合放大和缩小我的 Canvas 。 xLoc 和 yLoc 代表我的视口(viewport)的左上角,相对于我正在绘制的整个图像的一部分。不过,这段代码的问题是它会放大到视口(viewport)的中心。我希望能够使用 detector.getFocuxX() 和 detector.getFocusY() 来放大焦点,就像在 Android 浏览器中捏合缩放一样。

基本上,我需要调整视口(viewport)的位置(xLoc 和 yLoc),以便它呈现出放大到缩放手势的焦点的外观。

我想不通这部分。如果有人知道我如何在不使用 Canvas 矩阵变换的情况下做到这一点(我在发布这篇文章之前发现的许多主题中都使用过它),我将非常感激!即使您可以将我指向做过类似事情的其他人。

最佳答案

单个 onScale 函数调用无法提供足够的信息来实现围绕明显焦点的缩放。您需要保留上一次 onScale 调用中的 getFocusX()getFocusY() 的值,并使用它们影响下一次的缩放打电话。

关于android - 如何利用 android 的 ScaleGestureDetector 中的焦点像 android 浏览器一样进行缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323924/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com