gpt4 book ai didi

android - 如何在手指点内捏缩放?

转载 作者:搜寻专家 更新时间:2023-11-01 07:49:13 25 4
gpt4 key购买 nike

现在我正在使用此代码作为 android studio 中的自定义布局。但最大的问题是,当双指缩放时,它会放大到点 0,0 ,而不是放大到手指点。

https://gist.github.com/anorth/9845602

最佳答案

编辑: fork 原始要点并更新它,view it here .这比我想象的要复杂一点。缩放 View 的默认枢轴点是 View 的中心。为了完成这项工作,我必须将 View 枢轴设置为 (0,0) 并根据用户手势调整枢轴的平移。


我注意到在您的 onScale() 覆盖中您正在调用 scaleDetector.getScaleFactor() 但您没有调用 scaleDetector.getFocusX()scaleDetector.getFocusy()。这些方法告诉您双指缩放的焦点是什么。您将必须调用这些方法并获取此焦点 (x,y),然后进行一些计算以找出保持该焦点所需的平移。您必须将其应用于您的 dxdy 值,以便翻译说明焦点。

要计算平移,您需要获取焦点并将 x 和 y 值乘以比例因子的变化。这告诉您在给定焦点 (0,0) 的情况下该点将移动多远。因此,您将从 x(original) 中减去 x(updated) 并从 y(original) 中减去 y(updated) 以获得该移动向量。您的翻译值是否定的矢量值。所以:

scale(delta) = scaleDector.getScaleFactor() -- just the change, not the new scale factor
translation x = x(focal) - x(focal) * scale(delta)
translation y = y(focal) - y(focal) * scale(delta)

很明显,您会将这些值添加到您的 dxdy 值中以进行翻译。

关于android - 如何在手指点内捏缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37802564/

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