我正在结合我在 stackoverflow 和 android 开发工具包中找到的一些代码。我想将手指画布放在可锁定的水平滚动视图中。但是,每当我尝试在水平方向上绘制时,滚动视图都会滚动而不是在画布上绘画。当我有一个图像视图代替手指画的自定义视图时,它没有这个问题。我认为也许在自定义 lockableHorizontalScrollView 和自定义 drawingView 中覆盖 onTouchEvent 可能有问题。如果需要,我可以提供更多详细信息和代码。
摘自:
绘图视图.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);
}
}