1324


问一个关于onFling的问题
|
|
|
代码在项目当中,我贴一部分吧。 这个是ViewFlipper中的: @Override public boolean dispatchTouchEvent(MotionEvent ev) { boolean b = super.dispatchTouchEvent(ev); if (this.getChildCount() == 0) { return true; } else { if (isFling) { mGestureDetector.onTouchEvent(ev); } else { // super.onTouchEvent(ev); } } return b; } Gesture处理: @Override public boolean onDown(MotionEvent e) { Log.v("zxj", "onDown"); return false; } @Override public void onShowPress(MotionEvent e) { Log.v("zxj", "onShowPress"); } @Override public boolean onSingleTapUp(MotionEvent e) { Log.v("zxj", "onSingleTapUp"); return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.v("zxj", "onScroll"); return false; } @Override public void onLongPress(MotionEvent e) { Log.v("zxj", "onLongPress"); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.v("zxj", "isFling"); DynamicListView list = (DynamicListView) this.getChildAt(this .getDisplayedChild()); int state = list.getRefreshState(); if (state != list.TAP_TO_REFRESH) { return true; } else { Log.e("zxj", ">>>>>>>>>>>"); if (e2.getY() - e1.getY() < -200 || e2.getY() - e1.getY() > 200) { return false; } else if (e2.getX() - e1.getX() < -200) { if (listener != null) { listener.flingtoNext(); } return true; } else if (e2.getX() - e1.getX() > 200) { if (listener != null) { listener.flingtoNext(); } return true; } } return false; } ViewFlipper中add的是ListView touch处理 @Override public boolean onTouchEvent(MotionEvent event) { final int y = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_UP: if (!isVerticalScrollBarEnabled()) { setVerticalScrollBarEnabled(true); } if (getFirstVisiblePosition() == 0 && mRefreshState != REFRESHING) { if ((mRefreshView.getBottom() > mRefreshViewHeight || mRefreshView .getTop() >= 0) && mRefreshState == RELEASE_TO_REFRESH) { // Initiate the refresh mRefreshState = REFRESHING; prepareForRefresh(); onRefresh(); } else if (mRefreshView.getBottom() < mRefreshViewHeight || mRefreshView.getTop() < 0) { // Abort refresh and scroll down below the refresh view resetHeader(); setSelection(1); } } break; case MotionEvent.ACTION_DOWN: mLastMotionY = y; break; case MotionEvent.ACTION_MOVE: applyHeaderPadding(event); // return false; // break; } return super.onTouchEvent(event); } 这些就是相关代码,帮我看看。Listview中的Touch是处理上下滑动的。ViewFlipper中主要处理左右滑动。 |
|
public boolean dispatchTouchEvent(MotionEvent ev) { boolean b = super.dispatchTouchEvent(ev); if (this.getChildCount() == 0) { return true; } else { if (isFling) { mGestureDetector.onTouchEvent(ev); } else { // super.onTouchEvent(ev); } } return true; } 改一下,试一试 |
关于我们|手机版|Archiver|DEVDIV.COM ( 京ICP备07040843号 )
GMT+8, 2012-5-19 16:31
Powered by DEVDIV.COM!
© 2010-2012 DEVDIV.COM Coummunity.