Android 堆叠寻呼机和分派触摸事件
我从一位客户那里得到一个非常奇怪的要求,如下所示: 创建执行以下操作的视图: -用户应该能够上下滑动以在各种时钟面视图之间切换。 -用户应该能够左右滑动以在各种背景图像之间切换 我的第一个想法是有一个扩展FrameLayout的类,添加一个,在它上面添加另一个ViewPager,用它们的内容设置适当的适配器,然后覆盖FrameLayout的onTouchEvent和onInterceptTouchEvent方法,如下所示Android 堆叠寻呼机和分派触摸事件,android,android-viewpager,touch-event,Android,Android Viewpager,Touch Event,我从一位客户那里得到一个非常奇怪的要求,如下所示: 创建执行以下操作的视图: -用户应该能够上下滑动以在各种时钟面视图之间切换。 -用户应该能够左右滑动以在各种背景图像之间切换 我的第一个想法是有一个扩展FrameLayout的类,添加一个,在它上面添加另一个ViewPager,用它们的内容设置适当的适配器,然后覆盖FrameLayout的onTouchEvent和onInterceptTouchEvent方法,如下所示 @Override public boolean onInterceptT
@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的实现对于它需要做的事情来说有点太幼稚了,但老实说,我在尝试调试这一点时真是束手无策