Android手势-onDown有时才被调用
这是我第一次使用Android手势。我正在尝试使用我在这个网站上找到的以下方法调用swipeRight和swipeLeft SwipeTouchListener.java 在我的活动中,我调用以下方法并覆盖onSwipeLeft和onSwipeRight,并在这两个上显示Toast消息Android手势-onDown有时才被调用,android,gesture-recognition,Android,Gesture Recognition,这是我第一次使用Android手势。我正在尝试使用我在这个网站上找到的以下方法调用swipeRight和swipeLeft SwipeTouchListener.java 在我的活动中,我调用以下方法并覆盖onSwipeLeft和onSwipeRight,并在这两个上显示Toast消息 chartFlipper.setOnTouchListener(new SwipeTouchListener(this){ @Override public void onSwipeLeft()
chartFlipper.setOnTouchListener(new SwipeTouchListener(this){
@Override
public void onSwipeLeft() {
Toast.makeText(DashboardActivity.this, "Swipe Left", Toast.LENGTH_SHORT).show();
}
@Override
public void onSwipeRight() {
Toast.makeText(DashboardActivity.this, "Swipe Right", Toast.LENGTH_SHORT).show();
}
});
但问题是,我只在很少的场合看到祝酒词。我在onDown方法中设置了一个断点,发现它只会被调用几次,比如20次调用一次
编辑:我在ViewFlipper上调用了这个方法
编辑2:我在ViewFlipper中将饼图和条形图显示为两个视图。我刚发现浏览图表并不意味着触碰。有没有办法绕过这个问题?在你的方法中
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
float distanceX = e2.getX() - e1.getX();
float distanceY = e2.getY() - e1.getY();
if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (distanceX > 0)
onSwipeRight();
else
onSwipeLeft();
return true;
}
return false;
}
用户覆盖的距离的和条件应大于“滑动距离”阈值距离,这可能并非在所有情况下都是正确的,而且在许多情况下,滑动速度阈值的和条件可能低于阈值。因此,只有在距离大于阈值的情况下,才会看到结果阈值和速度也大于阈值速度尝试降低这些值,您将更频繁地看到结果
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
float distanceX = e2.getX() - e1.getX();
float distanceY = e2.getY() - e1.getY();
if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (distanceX > 0)
onSwipeRight();
else
onSwipeLeft();
return true;
}
return false;
}