最近做项目的时候碰到一个这样的需求:
1. 左右全屏滑动。不需要快速滑动
2. 当Item滑动结束时候需要处理一些业务逻辑。
针对1. 重写Gallery 的onFling的方法.
public class mygallery extends Gallery {
public mygallery(Context ctx, AttributeSet attrSet) {
super(ctx);
// 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, floatvelocityX, 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;
}
}
针对2. gallery 侦听Item被选择时候的事件。
setCallbackDuringFling(false)
setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener).