我的子视图驻留在ViewGroup中。 我想用捏缩放(缩放)孩子。 我正在使用setScaleX / Y()来缩放孩子。在OnTouch()中,通过2个指针之间的距离计算比例。 但是当我设置子的比例时,它会使motionEvent.getX()不一致,这使得比例变得不一致:
case MotionEvent.ACTION_MOVE:
p1.set(ev.getX(firstPointerIndex), v.getY(firstPointerIndex));
Log.d(TAG,"Touch xy: " + ev.getX(firstPointerIndex) + "," + ev.getY(firstPointerIndex));
this.setScaleX(scale);
this.setScaleY(scale);
break;
这是一个指针的输出:
12-09 11:55:14.828: D/IconItem(14408): Touch xy:54.622437, 135.79865
12-09 11:55:14.843: D/IconItem(14408): Touch xy:35.761047, 192.07361
12-09 11:55:14.863: D/IconItem(14408): Touch xy:54.669342, 135.65869
12-09 11:55:14.878: D/IconItem(14408): Touch xy:35.85121, 191.8046
12-09 11:55:14.898: D/IconItem(14408): Touch xy:54.715958, 135.51959
12-09 11:55:14.898: D/IconItem(14408): Touch xy:35.94078, 191.53735
12-09 11:55:14.913: D/IconItem(14408): Touch xy:54.776947, 135.33765
问题是在x-coord处跳跃35-54或在y-coord处跳转135-191。我无法理解这些跳跃的来源。 当我不使用setScaleX / Y()时,ev.getX / T()是一致的 - 没有跳转。有人能照亮我吗?我不应该使用这些比例方法吗?它们会影响ev.getX / Y()吗?如何以其他方式实现视图的缩放(带捏合)?
答案 0 :(得分:2)
是的,每个运动事件都在视图的坐标中给出,同时考虑了视图的矩阵(后者又包括比例)。您可以尝试通过canvas.scale()
进行缩放,而不是像Making Sense of Multitouch那样缩放视图,或者可能通过在另一个 not 进行缩放操作的视图中捕获MotionEvents