- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
现在我正在使用此代码作为 android studio 中的自定义布局。但最大的问题是,当双指缩放时,它会放大到点 0,0 ,而不是放大到手指点。
最佳答案
编辑: fork 原始要点并更新它,view it here .这比我想象的要复杂一点。缩放 View 的默认枢轴点是 View 的中心。为了完成这项工作,我必须将 View 枢轴设置为 (0,0) 并根据用户手势调整枢轴的平移。
我注意到在您的 onScale()
覆盖中您正在调用 scaleDetector.getScaleFactor()
但您没有调用 scaleDetector.getFocusX()
和 scaleDetector.getFocusy()
。这些方法告诉您双指缩放的焦点是什么。您将必须调用这些方法并获取此焦点 (x,y),然后进行一些计算以找出保持该焦点所需的平移。您必须将其应用于您的 dx
和 dy
值,以便翻译说明焦点。
要计算平移,您需要获取焦点并将 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)
很明显,您会将这些值添加到您的 dx
和 dy
值中以进行翻译。
关于android - 如何在手指点内捏缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37802564/
我用 cocos2d 制作了我的第一个应用程序,所以我在这里很新 我的第一个问题: 我不会让物体(船)跟随我的手指。 -(void) ccTouchMoved:(UITouch *)touch wit
如果某人将右手压在扫描仪的玻璃上进行扫描,结果将如下所示: (没有橙色和白色注释)。我们如何确定某人的 2D:4D ratio从他们的手的图像? 最佳答案 您已经标记了这个很棒的 opencv - 我
我的 View Controller 中有几个 UIScrollView。我想覆盖一个通过 UIPanGestureRecognizer 捕获 2 根手指滑动的 View ,它不会记录 UIScrol
现在这真是令人困惑...在不离开页面的情况下更新 mysql 数据库...我有 3 位代码。 head 标签中的 javascript、body 中的操作按钮以及要在另一个页面上执行的代码。以下是三个
我有这段代码是从 Style clipboard in flutter 得到的 showMenu( context: context, // TODO: Positio
我是一名优秀的程序员,十分优秀!