How can I limit fling in Android gallery to just one item per fling?
I have a gallery with several full screen images. I want to limit the fling gesture to only advance one image at a time (like the HTC Gallery app). What's the right/easiest way to achieve this?
Simply override the Gallery Widget's onFling()
method and don't call the superclass onFling()
method.
This will make the gallery advance one item per swipe.
I had the same requirement and I just discovered that it will slide just one item per fling if I'll just return false.
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
return false;
}
code example to answer the question:
public class SlowGallery extends Gallery
{
public SlowGallery(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
public SlowGallery(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public SlowGallery(Context context)
{
super(context);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
//limit the max speed in either direction
if (velocityX > 1200.0f)
{
velocityX = 1200.0f;
}
else if(velocityX < -1200.0f)
{
velocityX = -1200.0f;
}
return super.onFling(e1, e2, velocityX, velocityY);
}
}