其他分享
首页 > 其他分享> > android-在片段之间共享TouchEvent

android-在片段之间共享TouchEvent

作者:互联网

我有2个片段,共享屏幕.
两者中都有一个监听TouchEvent的布局.
当我在第一个片段上启动TouchEvent,然后将手指移到第二个片段的顶部时,第一个片段仍会收到TouchEvent,而第二个片段永远不会.
我尝试了不同的选择,但没有成功.解决活动中的TouchEvent,然后将其分派给两个片段,是否可以作为解决方案?
任何线索都欢迎=)

解决方法:

好 !这是(基本上)我如何做到的:
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);
}

Fragment1.java:

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

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

Fragment2.java:

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

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

它可行,但是如果有人有更好的解决方案,我总是在听=)

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

标签:fragment,touch-event,android
来源: https://codeday.me/bug/20191201/2079766.html