stackoverflow と Android 開発キットで見つけたいくつかのコードを組み合わせています。フィンガーペイント キャンバスをロック可能な水平スクロール ビュー内に配置したいと考えています。ただし、水平方向に描画しようとすると、キャンバスにペイントするのではなく、スクロールビューがスクロールします。フィンガーペイントのカスタムビューの代わりにイメージビューを使用した場合、この問題は発生しませんでした。おそらく、カスタム lockableHorizontalScrollView とカスタム drawingView の両方での onTouchEvent のオーバーライドに問題があると思います。必要に応じて、詳細とコードを提供できます。
抜粋:
drawingView.java
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
touch_start(x, y);
invalidate();
break;
case MotionEvent.ACTION_MOVE:
touch_move(x, y);
invalidate();
break;
case MotionEvent.ACTION_UP:
touch_up();
invalidate();
break;
}
return true;
}
LockableHorizontalScrollView.java
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
// if we can scroll pass the event to the superclass
if (mScrollable) return super.onTouchEvent(ev);
// only continue to handle the touch event if scrolling enabled
return mScrollable; // mScrollable is always false at this point
default:
return super.onTouchEvent(ev);
}
}