今天我得到了一个触摸事件处理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