今天我得到了一個觸摸事件處理Android自定義views.In問題,在這種情況下,我已創建父視圖調用weekview和chiled調用weekdayview.i希望實現像singleTap觸摸事件,只在子視圖LongPress和當我滑動父母或孩子我想滾動父視圖。當我在兩個視圖中實現觸摸事件它不工作。觸摸事件處理Android的父母和孩子的自定義視圖
誰能幫助我在this.It真的對我很有幫助。 謝謝
今天我得到了一個觸摸事件處理Android自定義views.In問題,在這種情況下,我已創建父視圖調用weekview和chiled調用weekdayview.i希望實現像singleTap觸摸事件,只在子視圖LongPress和當我滑動父母或孩子我想滾動父視圖。當我在兩個視圖中實現觸摸事件它不工作。觸摸事件處理Android的父母和孩子的自定義視圖
誰能幫助我在this.It真的對我很有幫助。 謝謝
設置您的滑動速度(檢測用戶的滑動意圖)並覆蓋子視圖中的onTouchEvent()。 在這裏,調用super.onTouchEvent()並返回,它調用你的父視圖。處理父視圖中的事件。
class ChildView extends View {
public void setGestureDetector (GestureDetector g)
{
gesture = g;
}
@Override
public boolean onTouchEvent (....)
{
return gesture.onTouchEvent (....); // touch event will dispatch to gesture
}
}
class ParentView extends View implements GestureDetector.OnGestureListener {
gesture = new GestureDetector (this);
child = new ChildView (...);
child.setGestureDetector (gesture);
@Override
public boolean onTouchEvent (..)
{
// handle your parent touch event here
}
public boolean onDown (...)
{
return true;
}
public boolean fling (...)
{
// here to handle child view fling
}
}
這是比索代碼(不是真正的Android的Java),讓您能使用GestureDetector的概念,你可以處理來自子視圖在父視圖的所有事件。當我在我的android手機上進行測試時,ChildView中的onTouchEvent並沒有很好地識別ACTION_UP,所以即使你刷過了你的子視圖,有時候它也不起作用(取決於ACTION_UP)。
所以,如果你想要寫上你的孩子更多準確刷卡,最好在寫歐文手勢檢測類,並在你的ChildView,你可以做到這一點 -
float oldX;
float distanceX;
public boolean onTouchEvent (MotionEvent event...)
{
if (event.getAction == MotionEvent.ACTION_DOWN) {
// handle down
oldX = event.getX();
}
if (event.getAction == MotionEvent.ACTION_MOVE {
// handle move
distanceX = event.getX() - oldX; // more accurate
gesture.onSwipe (distanceX); // your own gesture class
}
}
我認爲,如果觸摸事件是子視圖,父視圖將永遠不會收到通知。因此,最好使用GestureDetector,在您的Child視圖中,onTouchEvent中,將事件分派爲手勢,並在父視圖上處理。 – Tom
我在這兩個視圖中使用GestureDetector滾動部分完成父視圖,它是OK.but我想做一些事兒上的孩子view.I返回false onDown方法在子view.then滾動父母工作和觸摸子視圖上的事件不適用 – Sanath