1
我正在构建一个应用程序,允许用户使用水平滑动浏览不同的屏幕,但是这些屏幕也包含垂直滚动视图。看起来,如果垂直滚动不是100%垂直(希望有意义),android会将垂直滚动检测为水平滑动。Android Developemnt:降低水平滑动灵敏度或关闭垂直滑动
无论如何禁用垂直扫描,或降低水平检测的灵敏度?
onFling类中的代码目前非常基本,像这样。
public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX,
float velocityY) {
//Right Swipe
if (finish.getRawX() < start.getRawX()) {
Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show();
}
if (start.getRawX() < finish.getRawX()) {
Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show();
}
}
- 更新 -
嗯,我结束了计算bewtween轻扫,这给了我一个东西,用它来确定如何刷卡是垂直的起点和终点的垂直差异。它非常基本,但似乎工作正常。
更新的代码现在看起来像。
public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX,
float velocityY) {
//Right Swipe
//Caluclate the vertical difference
float verticalChange = start.getRawY() - finish.getRawY();
if ((finish.getRawX() < start.getRawX()) && (verticalChange > -40 && verticalChange < 40)) {
Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show();
}
if (start.getRawX() < finish.getRawX()) && (verticalChange > -40 && verticalChange < 40)) {
Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show();
}
}
理想情况下,我希望整个屏幕可以滑动,但只能在水平面上滑动。不,我目前只在仿真器上进行过测试。 – cosmicsafari 2013-02-26 13:41:29
如果可能的话,我会建议在实际的电话上尝试它(可以借用朋友吗?),并看看你是否有相同的结果。 模拟器已经走了很长的一段路,但是如果你有一台较慢的电脑,它的结果可能会相当不可思议/尴尬,我发现。 – Zerkz 2013-02-26 13:54:37