我结合了我在stackoverflow和android开发工具包中找到的一些代码段。我想把fingerpaint画布放在可锁定的horizontalscrollview中。然而,无论何时我试图在水平方向上绘制,滚动视图都会滚动而不是在画布上绘画。当我在fingerpaint的自定义视图中使用imageview时,它没有这个问题。我认为可能在自定义lockableHorizontalScrollView和自定义drawingView中重写onTouchEvent可能是错误的。如有需要,我可以提供更多详细信息和代码。horizontalscrollview内的fingerpaint
提取物来源:
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);
}
}
您所包含的源代码看起来有点帮助,但现在绘制组件只会在放弃之前在水平方向上绘制小部分。我想还有其他的手势需要考虑。滚动应在我正在绘画时锁定,然后当我单击按钮时,应该恢复滚动行为。 – 2011-05-22 20:09:37
看起来我也可能必须重写onInterceptTouchEvent。我会尽力让我的头靠近它。这是我找到的一个链接; http://stackoverflow.com/questions/2646028/android-horizontalscrollview-within-scrollview-touch-handling – 2011-05-23 22:36:52