У меня есть пользовательский View
, и я переопределяю onTouchEvent(MotionEvent)
. Я реализовал пинч-зум в этом представлении, как описано в статье Осмысление Multitouch . Проблема, с которой я столкнулся, заключается в том, что это представление в конечном итоге используется в Gallery
, для прокрутки которого нужны события касания. Я добавил логику, чтобы определять, когда мой вид полностью прокручивается вправо / влево и возвращает ложь, но я думаю, что Gallery
требуется полное движение MotionEvent
для прокрутки. Вот где я возвращаю false:
case MotionEvent.ACTION_MOVE: {
final int pointerIndex = event.findPointerIndex( getActivePointerId() );
final float x = event.getX( pointerIndex );
final float y = event.getY( pointerIndex );
// Only move if the ScaleGestureDetector isn't processing a gesture.
if ( !getScaleDetector().isInProgress() ) {
if ( isDetectMovementX() ) {
final float dx = x - getLastTouchX();
setPosX( getPosX() + dx );
}
if ( isDetectMovementY() ) {
final float dy = y - getLastTouchY();
setPosY( getPosY() + dy );
}
invalidate();
}
setLastTouchX( x );
setLastTouchY( y );
if ( isAtXBound() ) {
return false;
}
break;
}
View
увеличивает и переводит, но Gallery
никогда не прокручивается. Мне интересно, есть ли способ в принципе повторно отправить MotionEvent
как «свежий» MotionEvent
с начальным действием, равным ACTION_DOWN
. Спасибо!