@@ -147,6 +147,7 @@ public class CalendarLayout extends LinearLayout {
147
147
148
148
private float downY ;
149
149
private float mLastY ;
150
+ private float mLastX ;
150
151
private boolean isAnimating = false ;
151
152
152
153
/**
@@ -296,7 +297,7 @@ public boolean onTouchEvent(MotionEvent event) {
296
297
mCalendarShowMode == CALENDAR_SHOW_MODE_ONLY_WEEK_VIEW ) {//禁用手势,或者只显示某种视图
297
298
return false ;
298
299
}
299
- if (mDelegate == null ){
300
+ if (mDelegate == null ) {
300
301
return false ;
301
302
}
302
303
if (mDelegate .isShowYearSelectedLayout ) {
@@ -318,10 +319,10 @@ public boolean onTouchEvent(MotionEvent event) {
318
319
return true ;
319
320
case MotionEvent .ACTION_POINTER_DOWN : {
320
321
final int indexx = event .getActionIndex ();
321
- mActivePointerId = event .getPointerId ( indexx );
322
+ mActivePointerId = event .getPointerId (indexx );
322
323
if (mActivePointerId == 0 ) {
323
324
//核心代码:就是让下面的 dy = y- mLastY == 0,避免抖动
324
- mLastY = event .getY ( mActivePointerId );
325
+ mLastY = event .getY (mActivePointerId );
325
326
}
326
327
break ;
327
328
}
@@ -473,14 +474,17 @@ public boolean onInterceptTouchEvent(MotionEvent ev) {
473
474
}
474
475
final int action = ev .getAction ();
475
476
float y = ev .getY ();
477
+ float x = ev .getX ();
476
478
switch (action ) {
477
479
case MotionEvent .ACTION_DOWN :
478
480
int index = ev .getActionIndex ();
479
481
mActivePointerId = ev .getPointerId (index );
480
482
mLastY = downY = y ;
483
+ mLastX = x ;
481
484
break ;
482
485
case MotionEvent .ACTION_MOVE :
483
486
float dy = y - mLastY ;
487
+ float dx = x - mLastX ;
484
488
/*
485
489
如果向上滚动,且ViewPager已经收缩,不拦截事件
486
490
*/
@@ -503,7 +507,7 @@ public boolean onInterceptTouchEvent(MotionEvent ev) {
503
507
return false ;
504
508
}
505
509
506
- if (Math .abs (dy ) > mTouchSlop ) { //大于mTouchSlop开始拦截事件,ContentView和ViewPager得到CANCEL事件
510
+ if (Math .abs (dy ) > Math . abs ( dx ) ) { //纵向滑动距离大于横向滑动距离,拦截滑动事件
507
511
if ((dy > 0 && mContentView .getTranslationY () <= 0 )
508
512
|| (dy < 0 && mContentView .getTranslationY () >= -mContentViewTranslateY )) {
509
513
mLastY = y ;
@@ -839,7 +843,7 @@ private void hideWeek(boolean isNotify) {
839
843
*/
840
844
private void showWeek () {
841
845
onShowWeekView ();
842
- if (mWeekPager != null && mWeekPager .getAdapter ()!= null ){
846
+ if (mWeekPager != null && mWeekPager .getAdapter () != null ) {
843
847
mWeekPager .getAdapter ().notifyDataSetChanged ();
844
848
mWeekPager .setVisibility (VISIBLE );
845
849
}
0 commit comments