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