我結合了我在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