onTouch事件和Action移动android

时间:2014-01-29 08:31:45

标签: android ontouchevent

我有ViewPager,我想使用onTouch上下移动它

@Override
    public boolean onTouch(View v, MotionEvent event) {
        final int X = (int) event.getX();
        final int Y = (int) event.getY();
            if (flagMeal)
            {
                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    xOffset = X;
                    yOffset = Y;
                break;
                case MotionEvent.ACTION_MOVE:
                    float x= xOffset - event.getX()  ;
                    float y = yOffset - event.getY()  ;
                    ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) mViewPager.getLayoutParams();
                     p.topMargin = (int) -y ;
                     p.bottomMargin = (int) y ;
                     mViewPager.setLayoutParams(p);
                    // mViewPager.invalidate();
                    break;

                default:
                    break;
                }
            }
        return true;
    }

它正在工作,但是视图在正确位置绘制一次,而在旧位置绘制一次就像振动运动一样 我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

其实我发现了这个问题 它来自event.getY()它应该是event.getRawY() 但我不知道原因 有没有解释?