頂部輪播圖事件處理

重寫dispatchTouchEvent,並且要在按下的時候

getParent().requestDisallowInterceptTouchEvent(true);

一、豎直方向移動

getParent().requestDisallowInterceptTouchEvent(false);

二、水平方向移動
1、當滑動到viewpager的第0個頁面,並且是從左往右移動

getParent().requestDisallowInterceptTouchEvent(false);

2、當滑動到viewpager的最後一個頁面,並且是從右往左移動

getParent().requestDisallowInterceptTouchEvent(false);

3、其他

getParent().requestDisallowInterceptTouchEvent(true);
switch (ev.getAction()){
            case MotionEvent.ACTION_DOWN:
            	getParent().requestDisallowInterceptTouchEvent(true);
                //記錄起始座標
                startX = ev.getX();
                startY = ev.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                //來到新的座標
                float endX = ev.getX();
                float endY = ev.getY();
                //計算偏移量
                float distanceX = endX - startX;
                float distanceY = endY - startY;
                //判斷滑動方向
                if(Math.abs(distanceX) > Math.abs(distanceY)){

                    if(getCurrentItem()==0&&distanceX >0){
                        getParent().requestDisallowInterceptTouchEvent(false);
                    }


                    else if((getCurrentItem()==(getAdapter().getCount()-1))&& distanceX <0){
                        getParent().requestDisallowInterceptTouchEvent(false);
                    }

                    else{
                        getParent().requestDisallowInterceptTouchEvent(true);
                    }
                }else{

                    getParent().requestDisallowInterceptTouchEvent(false);
                }
                break;
            case MotionEvent.ACTION_UP:
                break;
            default:
                break;
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章