Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 堆叠寻呼机和分派触摸事件_Android_Android Viewpager_Touch Event - Fatal编程技术网

Android 堆叠寻呼机和分派触摸事件

Android 堆叠寻呼机和分派触摸事件,android,android-viewpager,touch-event,Android,Android Viewpager,Touch Event,我从一位客户那里得到一个非常奇怪的要求,如下所示: 创建执行以下操作的视图: -用户应该能够上下滑动以在各种时钟面视图之间切换。 -用户应该能够左右滑动以在各种背景图像之间切换 我的第一个想法是有一个扩展FrameLayout的类,添加一个,在它上面添加另一个ViewPager,用它们的内容设置适当的适配器,然后覆盖FrameLayout的onTouchEvent和onInterceptTouchEvent方法,如下所示 @Override public boolean onInterceptT

我从一位客户那里得到一个非常奇怪的要求,如下所示:

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

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

@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项目

我怀疑我对onInterceptTouchEvent和onTouchEvent的实现对于它需要做的事情来说有点太幼稚了,但老实说,我在尝试调试这一点时真是束手无策