It looks like you can now solve this problem with much less code using a gesture detector, for example:
import android.content.Context; import android.util.AttributeSet; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.widget.GridView; public class ScrollingGridView extends GridView { private GestureDetector gestureDetector; public ScrollingGridView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public ScrollingGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setupGestureListener(); } private void setupGestureListener() { GestureDetector.SimpleOnGestureListener gestureListener = new GestureDetector.SimpleOnGestureListener() { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { scrollBy((int)distanceX, (int)distanceY); return true; } }; gestureDetector = new GestureDetector(getContext(), gestureListener); setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { gestureDetector.onTouchEvent(motionEvent); return true; } }); } }
Miles egan
source share