• AndroidGallery实现切一屏


    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();
     
    }

  • 相关阅读:
    Nginx负载均衡
    MySQL主从复制
    笔记
    tomcat工作原理
    Nginx工作原理
    Loj#6183. 看无可看
    [BZOJ 2759] 一个动态树好题
    5255 -- 【FJOI2016】神秘数
    [NOI2015]寿司晚宴
    [CQOI2017]老C的键盘
  • 原文地址:https://www.cnblogs.com/crane13/p/3150177.html
Copyright © 2020-2023  润新知