3

我有 2 个片段,共享屏幕。在两者中,都有一个正在监听 TouchEvents 的布局。
当我在第一个片段上启动 TouchEvent,然后将手指移到第二个片段上时,第一个片段仍会收到 TouchEvent,而第二个片段则不会。
我尝试了不同的选择但没有成功。处理来自活动的TouchEvent,然后将其分派到两个片段,这可能是一个解决方案吗?
欢迎任何线索=)

4

1 回答 1

3

行 !这是(非常基本上)我是如何管理的:
MyActivity.java :

private ArrayList<MyOnTouchListener> onTouchListeners = new  ArrayList<MusicShaker.MyOnTouchListener>(10);
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    for (MyOnTouchListener listener : onTouchListeners) {
        listener.onTouch(ev);
    }
    return super.dispatchTouchEvent(ev);
}
public void registerMyOnTouchListener(MyOnTouchListener listener){
    onTouchListeners.add(listener);
}
public interface MyOnTouchListener {
    public void onTouch(MotionEvent ev);
}

片段1.java:

((MyActivity)getActivity()).registerMyOnTouchListener(new MyActivity.MyOnTouchListener() {

        @Override
        public void onTouch(MotionEvent ev) {
            Log.d("", "Fragment1 got it");
        }
    });

片段2.java:

((MyActivity)getActivity()).registerMyOnTouchListener(new MyActivity.MyOnTouchListener() {

        @Override
        public void onTouch(MotionEvent ev) {
            Log.d("", "Fragment2 got it");
        }
    });

它有效,但如果有人有更好的解决方案,我一直在听 =)

编辑:小心使用这个解决方案,因为 MotionEvent x 和 y 将与 rawX 和 rawY 相同(不再转换为 View 的坐标)

于 2012-05-23T19:26:28.773 回答