slidingMenu下的Viewpager滑动点击事件冲突
一定义触摸事件
/**自定义Viewpager触摸事件
*/
class PagerOnTouchListener implements OnTouchListener {@Override
public boolean onTouch(View v, MotionEvent event) {switch (event.getAction()){ case MotionEvent.ACTION_UP: MyLog.d(TAG,"Viewpager上的手指抬起了! "); mTopViewsHandler.postDelayed(pagerRollRunnable,5000);//手指抬起时时开启轮播 } return gestureDetector.onTouchEvent(event);
}
}
/**
重写手势识别器
*/
GestureDetector gestureDetector = new GestureDetector(new GestureDetector.OnGestureListener(){
@Override
public boolean onDown(MotionEvent e) {
MyLog.d(TAG,”onDown”);
mTopViewsHandler.removeCallbacks(pagerRollRunnable);//停止轮播
mTopNewsViewPager.getParent().requestDisallowInterceptTouchEvent(true);//让SlidingMenu不响应事件
return false;
}@Override
public void onShowPress(MotionEvent e) {
MyLog.d(TAG,”onShowPress”);
}@Override
public boolean onSingleTapUp(MotionEvent e) {
//实现ViewPager图片点击的跳转
UIUtils.startActivity(MainActivity.this, NewsDetailActivity.class, Constants.NEWS_ID_KEY, topNewsList.get(mTopNewsViewPager.getCurrentItem() % topNewsList.size()).newid+”“);
MyLog.d(TAG,”onSingleTapUp”);
return false;
}@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
MyLog.d(TAG,”onScroll”);
return false;
}@Override
public void onLongPress(MotionEvent e) {
MyLog.d(TAG,”onLongPress”);}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
MyLog.d(TAG,”onFling”);
return false;
}
});
- 二 ,使用
mTopNewsViewPager.setOnTouchListener(new PagerOnTouchListener());