现在我在android studio中使用此代码作为自定义布局。但是最大的问题是,当捏缩放时,它会放大到点0,0,而不是放大到手指点。
答案 0 :(得分:4)
编辑:分叉原始要点并更新它view it here。它比我想象的要复杂一点。缩放视图的默认枢轴点是视图的中心。为了完成这项工作,我必须将视图枢轴设置为(0,0),并根据用户的手势调整枢轴的平移。
我注意到,在scaleDetector.getScaleFactor()
覆盖中,您正在呼叫scaleDetector.getFocusX()
,但您没有呼叫scaleDetector.getFocusy()
和dx
。这些方法告诉您捏缩放的焦点是什么。您将不得不调用这些方法并获得此焦点(x,y),然后进行一些计算以确定保持该焦点所需的平移。您必须将此工作纳入dy
和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)
值,以便转换成为焦点。
要计算平移,您将获取焦点并将x和y值乘以比例因子的变化。这将告诉您在给定焦点(0,0)的情况下该点移动的距离。因此,您将从y(原始)减去x(更新)和从y(原始)减去y(更新)以获得该移动向量。您的翻译值是否定的向量值。所以:
dx
很明显,您会将这些值添加到dy
和MyCombobox.SelectedValue = myDate.ToString("HH:mm");
值进行翻译。