在子对象中,我们需要跟踪坐标(ACTION_MOVE)。如果坐标为getX() > x
,我们必须将事件发送到父对象。
问题:要将事件发送给父级,我们需要返回false,但如果返回false,我们将无法跟踪子级中对象的坐标。
public boolean onTouch(View v,MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_MOVE) {
if (e.getY() > 200) {
return false; //we must send event to the parent object, but since then the ACTION_MOVE event no longer occurs here
} else {
myView.setTranslationY(e.getY());
return true; //we have to handle the event here
}
}
return false;
}
如何正确处理这两个条件?
答案 0 :(得分:0)
您可以在子类中定义一个接口,它将由父级实现。当您需要将事件发送到父对象时,可以调用接口方法,如下所示:
儿童班:
public boolean onTouch(View v,MotionEvent e){
if(e.getAction()==MotionEvent.ACTION_MOVE){
if(e.getY()>200){
super.onTouchChildListener(v,e);
}else{
myView.setTranslationY(e.getY());
}
return true;
}
return false;
}
...
public interface OnChildListener {
void onTouchChildListener(View v, MotionEvent e);
}