android gallery 滑动速度控制

   Gallery(画廊)是android提供的一个用于水平显示的图片查看控件,但是默认的Gallery滑动切换的时候,由于OnFling的速度参数关系,一次会切换N多个图片,这样的话交互性就不太友好了。

 

   那么如何实现单屏切换呢,其实很简单,写一个自定义的Gallery类,该类继承自Gallery,然后重写Gallery的OnFling()方法,让其直接return false,具体如下:

@Override
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
  // TODO Auto-generated method stub
//  return super.onFling(e1, e2, velocityX/1.5f, velocityY);
  return false;
 }

 

    但是OnFling()  return  flase之后发觉确实达到一次切换一屏的效果,但是灵敏度有点低,需要滑动很长的距离才能切换,所以可以继续重写其onScroll方法,讲其水平位移参数distanceX调整一下即可,具体如下

 @Override
 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
  // TODO Auto-generated method stub
  return super.onScroll(e1, e2, distanceX*3, distanceY);
 }

 

上边是直接让速度不起作用,要是又想有速度 又想只切换一张,也就是短距离的滑动呢看下边

 

 // 实现短距离滑动
 @Override
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
      int kEvent;
      if (isScrollingLeft(e1, e2)) {
          // Check if scrolling left
          kEvent = KeyEvent.KEYCODE_DPAD_LEFT;
      } else {
         // Otherwise scrolling right
         kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;
      }
      onKeyDown(kEvent, null);
      return true;
 }

 

 private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2) {
      return e2.getX() > e1.getX();
 }



转自:http://blog.sina.com.cn/s/blog_6dee4454010127iv.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值