Android(安卓)添加Fragment的onTouchEvent监听
16lz
2021-01-26
Android原生的Fragment不像Activity一样有onTouchEvent这样的触摸事件监听,但是可以间接实现。实现的步骤:
第一,首先在Fragment依附的Activity(假设这个Activity名为MainActivity)中增加接口和分发onTouchEvent:
private ArrayList mFragmentTouchListeners = new ArrayList<>(); public void registerFragmentTouchListener(FragmentTouchListener listener) { mFragmentTouchListeners.add(listener); } public void unRegisterFragmentTouchListener(FragmentTouchListener listener) { mFragmentTouchListeners.remove(listener); } @Override public boolean dispatchTouchEvent(MotionEvent event) { for (FragmentTouchListener listener : mFragmentTouchListeners) { listener.onTouchEvent(event); } return super.dispatchTouchEvent(event); } public interface FragmentTouchListener { boolean onTouchEvent(MotionEvent event); }
第二,在Fragment中主动注册(View创建成功后,比如在onViewCreated函数回调里面)和注销之前在Activity中定义的FragmentTouchListener:
注册:((MainActivity) this.getActivity()).registerFragmentTouchListener(fragmentTouchListener);注销(在onDestory中):((MainActivity) this.getActivity()).unRegisterFragmentTouchListener(fragmentTouchListener);
第三,接着就可以在Fragment中的FragmentTouchListener(fragmentTouchListener对象)里面的onTouchEvent中捕获和监听触摸点击事件了,fragmentTouchListener监听Fragment触摸事件,具体的就是在onTouchEvent里面捕获和监听MotionEvent:
MainActivity.FragmentTouchListener fragmentTouchListener = new MainActivity.FragmentTouchListener() { @Override public boolean onTouchEvent(MotionEvent event) { return false; } };
完
更多相关文章
- android view事件分发机制
- Android手机归属地查询工具
- Android(安卓)View 事件分发处理流程
- Android(安卓)进阶到高级 - 突破篇
- Java入侵检测(三)
- Android(安卓)Touch 事件分发机制
- Android(安卓)中文API (91) —— GestureDetector
- Android(安卓)拦截Home键的常用方法
- Android(安卓)onTouchEvent, onClick及onLongClick的调用机制