我的子视图位于 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 坐标处跳跃 35-54 或在 y 坐标处跳跃 135-191。我不明白这些跳跃是从哪里来的。当我不使用 setScaleX/Y() 时,ev.getX/T() 是一致的 - 没有跳跃。谁能点亮我?我不应该使用这些缩放方法吗?它们会影响 ev.getX/Y() 吗?如何以其他方式实现视图的缩放(捏合)?