Gallery滑动惯性

gallery的使用:系统gallery,使用后,滑动以下,会连续快速的滑动,有些时候是不需要这样的,比如,实现广告循环播放,不需要快速滑动。下面是解决这个问题的方法代码:

继承gallery,修改onFling方法,如果单纯的让滑动快速效果失效,在onFling方法中直接返回false即可;以下代码是解决了快速滑动以及滑动距离过大(需要滑动半屏才能滑动一张)问题。


import android.content.Context;  
import android.util.AttributeSet;  
import android.view.KeyEvent;  
import android.view.MotionEvent;  
import android.widget.Gallery;  
  
@SuppressWarnings("deprecation")  
public class MyGallery extends Gallery{  
  
    public MyGallery(Context context) {  
        super(context);  
        // TODO Auto-generated constructor stub  
    }  
  
    public MyGallery(Context context, AttributeSet attrs) {  
        super(context, attrs);  
        // TODO Auto-generated constructor stub  
    }  
  
    public MyGallery(Context context, AttributeSet attrs, int defStyle) {  
        super(context, attrs, defStyle);  
        // TODO Auto-generated constructor stub  
    }  
      
    private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2)    
       {       
        return e2.getX() > e1.getX();     
       }    
     @Override    
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,    
       float velocityY) {    
      // TODO Auto-generated method stub    
    //  return super.onFling(e1, e2, 0, velocityY);//方法一:只去除翻页惯性    
    //  return false;//方法二:只去除翻页惯性  注:没有被注释掉的代码实现了开始说的2种效果。    
      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;      
      }    
      
} 


猜你喜欢

转载自blog.csdn.net/luengyong/article/details/48996013
今日推荐