Android 如何区分收缩缩放和单击?
我有一个自定义布局,可以作为父级进行收缩缩放,还有一个子级布局,其中包含许多带有单击事件的imagview。问题是,当第一个手指触摸imageview子对象,第二个手指触摸其他位置时,它不会缩放,但只会执行单击事件中的操作 对于收缩缩放代码,我使用以下代码: 有关单击事件代码:Android 如何区分收缩缩放和单击?,android,android-layout,Android,Android Layout,我有一个自定义布局,可以作为父级进行收缩缩放,还有一个子级布局,其中包含许多带有单击事件的imagview。问题是,当第一个手指触摸imageview子对象,第二个手指触摸其他位置时,它不会缩放,但只会执行单击事件中的操作 对于收缩缩放代码,我使用以下代码: 有关单击事件代码: imageView.setOnTouchListener( new View.OnTouchListener() { @Override public b
imageView.setOnTouchListener( new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
// primary finger down
Log.i("Frag", "actionDOWN");
return true;
case MotionEvent.ACTION_POINTER_DOWN:
// non-primary finger down
Log.i("Frag", "pointerDOWN");
return false; //go to zoom
case MotionEvent.ACTION_UP:
// primary finder up
Log.i("Frag", "actionUP");
Intent intent = new Intent(getActivity(), DeviceActivity.class);
startActivity(intent);
return true; // stay at frag
case MotionEvent.ACTION_POINTER_UP:
// non-primary finger up
Log.i("Frag", "pointerUP");
return false;
}
return false;
}
});
试试这个图书馆-
它包括平移、缩放、双击
希望它能有所帮助:)您需要等待一段时间来检查是否有其他指针记录了任何触摸事件。 这是我用于缩放和缩放的代码,适用于大多数情况
onTouchEvent(MotionEvent event) {
//让所有触摸都通过ScaleStereDetector
scaleGestureDetector.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
clickTime = System.nanoTime();
deltaTime = System.nanoTime();
}
if (event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) {
secondPointerDown = true;
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
deltaTime = System.nanoTime();
}
// wait for some time (300 - 600 ms) to check for any other pointer.
if (!secondPointerDown && (deltaTime - clickTime) / 100000.0f > 600) {
//do click event
}
if (event.getActionMasked() == MotionEvent.ACTION_POINTER_UP) {
secondPointerDown = false;
clickTime = System.nanoTime();
deltaTime = System.nanoTime();
}
}
我的收缩缩放工作正常问题是,当第一个手指放在imageview时,它只会执行单击事件。即使您尝试收缩缩放。对于收缩缩放操作,需要向下移动和向下移动指针,在向下移动操作中,它将生成单击事件,您不能用一个手指缩放(即向下移动)。我理解这一点。现在,我使用自定义缩放相对布局作为父布局,并使用onTouchListener动态创建多个imageView。我无法正确缩放,就好像第一个手指触摸imageView,第二个手指触摸其他地方一样,这只会对侦听器产生影响。但是,如果第一个手指触摸自定义缩放布局,然后触摸子对象或任何其他位置,则可能会挤压缩放精细动作指针,只有当其他手指触摸屏幕时,才会调用该指针。不错!