ViewPager和SlidingPaneLayout的滑动事件冲突解决方法
问题描述:
ViewPager和SlidingPaneLayout的滑动事件冲突。
问题分析:
在手指左右滑动时,SlidingPaneLayout会屏蔽ViewPager的滑动事件。
解决办法:
自定义SlidingPaneLayout类
importandroid.content.Context;
importandroid.support.v4.view.MotionEventCompat;
importandroid.support.v4.widget.SlidingPaneLayout;
importandroid.util.AttributeSet;
importandroid.view.MotionEvent;
importandroid.view.ViewConfiguration;
publicclassPagerEnabledSlidingPaneLayoutextendsSlidingPaneLayout{
privatefloatmInitialMotionX;
privatefloatmInitialMotionY;
privatefloatmEdgeSlop;
publicPagerEnabledSlidingPaneLayout(Contextcontext){
this(context,null);
}
publicPagerEnabledSlidingPaneLayout(Contextcontext,
AttributeSetattrs){
this(context,attrs,0);
}
publicPagerEnabledSlidingPaneLayout(Contextcontext,
AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
ViewConfigurationconfig=ViewConfiguration.get(context);
mEdgeSlop=config.getScaledEdgeSlop();
}
@Override
publicbooleanonInterceptTouchEvent(MotionEventev){
switch(MotionEventCompat.getActionMasked(ev)){
caseMotionEvent.ACTION_DOWN:{
mInitialMotionX=ev.getX();
mInitialMotionY=ev.getY();
break;
}
caseMotionEvent.ACTION_MOVE:{
finalfloatx=ev.getX();
finalfloaty=ev.getY();
if(mInitialMotionX>mEdgeSlop&&!isOpen()&&canScroll(this,false,
Math.round(x-mInitialMotionX),Math.round(x),Math.round(y))){
MotionEventcancelEvent=MotionEvent.obtain(ev);
cancelEvent.setAction(MotionEvent.ACTION_CANCEL);
returnsuper.onInterceptTouchEvent(cancelEvent);
}
}
}
returnsuper.onInterceptTouchEvent(ev);
}
}
以上这篇ViewPager和SlidingPaneLayout的滑动事件冲突解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
热门推荐
10 接亲祝福语女生文案简短
11 送米的祝福语简短
12 关于出国留学祝福语简短
13 精辟简短的公司祝福语
14 快乐发财祝福语简短英文
15 家长会简短祝福语
16 元旦感恩祝福语简短大全
17 滑稽搞笑结婚祝福语简短
18 学弟英语高考祝福语简短