@Override public boolean onTouchEvent(MotionEvent event) { mDragHelper.processTouchEvent(event); final int action = event.getAction(); final float x = event.getX(); final float y = event.getY(); // 触摸点是否落在HeaderView上 boolean isHeaderViewUnder = mDragHelper.isViewUnder(mHeaderView, (int) x, (int) y); switch (action & MotionEventCompat.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { mInitialMotionX = x; mInitialMotionY = y; break; } case MotionEvent.ACTION_UP: { final float dx = x - mInitialMotionX; final float dy = y - mInitialMotionY; final float slop = mDragHelper.getTouchSlop(); LogUtil.i(TAG, "dx * dx + dy * dy = " + dx * dx + dy * dy); LogUtil.i(TAG, "slop * slop = " + slop * slop); LogUtil.i(TAG, "mDragOffset:" + mDragOffset); if (dx * dx + dy * dy < slop * slop && isHeaderViewUnder) { if (Constants.hasEnterpriseAccountLoggedIn()) { if (onFlagAreaExpandLis != null) { onFlagAreaExpandLis.onSAASCMSSwitch(); } } else { if (mDragOffset == 0) { minimize(); } else { maximize(); } } } else { if (Constants.hasEnterpriseAccountLoggedIn()) { if (onFlagAreaExpandLis != null) { onFlagAreaExpandLis.onSAASCMSSwitch(); } } } break; } } return isHeaderViewUnder && isViewHit(mHeaderView, (int) x, (int) y) || isViewHit(mContentView, (int) x, (int) y); }
/** 打开 */ public void minimize() { if (mHeaderView.getVisibility() == View.VISIBLE) { if (onFlagAreaExpandLis != null) { onFlagAreaExpandLis.onFlagAreaExpand(); } smoothSlideTo(1.0f); } }