堆叠ViewPagers并调度触摸事件

时间:2014-05-28 17:07:35

标签: android android-viewpager ontouchevent

我对客户的要求如下:

创建一个执行以下操作的视图:
- 用户应该能够上下滑动以在各种钟面视图之间切换 - 用户应该能够左右滑动以在各种背景图像之间切换。

我的第一个想法是有一个扩展FrameLayout的类,添加一个VerticalViewPager,在它上面添加另一个ViewPager,用它们的内容设置适当的适配器,然后覆盖FrameLayout的onTouchEventonInterceptTouchEvent方法如下

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    switch (ev.getActionMasked()) {
        case MotionEvent.ACTION_DOWN: {
            // store the X value when the user's finger was pressed down
            downXValue = ev.getX();
            downYValue = ev.getY();
            break;
        }
    }
    return true;
}

float downXValue, downYValue;
@Override
public boolean onTouchEvent(MotionEvent event) {
    Log.e(TAG, event.toString());
    float currentX = event.getX();
    float currentY = event.getY();

    if (Math.abs(downXValue - currentX) > Math.abs(downYValue
            - currentY)) {
        mHorizPager.dispatchTouchEvent(event);
    } else {
        mVerticalPager.dispatchTouchEvent(event);
    }
    return true;
}

虽然这在技术上正常工作,因为它正确地将MotionEvent调度到适当的ViewPager,滑动水平视图非常麻烦,并且很少实际更改当前的ViewPager项。

我怀疑我的onInterceptTouchEventonTouchEvent的实现对于它需要做的事情来说有点过于天真,但我老实说我最终试图调试它。

0 个答案:

没有答案