您的位置:首页 > 其它

Gallery实现每次只滚动一张图片

2013-09-27 16:31 411 查看
    在工程中用到了Gallery,所以就对Gallery做了一些相应的调查和测试。结论是想要实现Gallery每次之滚动一次有两种方法:

    方法一: 重写Gallery 的onFling方法,只需要return false即可。

 @Override

 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

      return false;

 }

虽然这个方法比较简单,但是我测试时感觉需要手指滑动很远才能翻页,感觉灵敏度不够高。没有关系我们还可以调整灵敏度。需要重写Gallery的onScroll方法。建议FLINE_SENSITIVITY设置成1.5,因为设置太大,滑动较长的距离仍然会翻滚多个页面。

 private static final float FLINE_SENSITIVITY = 1.5f;

@Override

 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

    float f = FLINE_SENSITIVITY * distanceX;

    super.onScroll(e1, e2, f, distanceY);

}

    方法二:还是重写onFling方法,不过要在方法里面实现一次点击左右按键的操作。这个方法比较稳妥,也很流畅,用户体验也很好,但是滑动的时候会有按键音。

private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2) {

    return e2.getX() > e1.getX();

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

float velocityY) {

    int kEvent;

    if (isScrollingLeft(e1, e2)) {

    kEvent = KeyEvent.KEYCODE_DPAD_LEFT;

    } else {

    kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;

   }

   onKeyDown(kEvent, null);

   return true;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: