目的:
去除点击item移动,实现左侧对齐显示。
代码:
package com.example.balsfood2; import java.lang.reflect.Field; import android.R.attr; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Camera; import android.graphics.Matrix; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.Transformation; import android.widget.Gallery; public class AlignLeftGallery extends Gallery { public interface IOnItemClickListener { public void onItemClick(int position); } private static final String TAG = "AlignLeftGallery"; private IOnItemClickListener mListener; public AlignLeftGallery(Context context, AttributeSet attrs) { super(context, attrs); } public void setOnItemClickListener(IOnItemClickListener listener) { mListener = listener; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { System.out.println("onFling:"+String.valueOf(e2.getX() - e1.getX())); //super. onFling( e1, e2, velocityX, velocityY) ; return true; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { System.out.println("onScroll:"+String.valueOf(e2.getX() - e1.getX())); if((e2.getX() - e1.getX()) <- 20) setSelection(7); else if((e2.getX() - e1.getX()) > 20) setSelection(2); invalidate(); //super. onScroll( e1, e2, distanceX, distanceY) ; return true; } @Override public boolean onSingleTapUp(MotionEvent e) { Log.i(TAG, "onSingleTapUp----------------------"); try { Field f = AlignLeftGallery.class.getSuperclass().getDeclaredField("mDownTouchPosition"); f.setAccessible(true); int position = f.getInt(this); Log.i(TAG, "mDownTouchPosition = " + position); if(null != mListener && position >= 0) { mListener.onItemClick(position); } } catch (SecurityException e1) { e1.printStackTrace(); } catch (NoSuchFieldException e1) { e1.printStackTrace(); } catch (IllegalArgumentException e2) { e2.printStackTrace(); } catch (IllegalAccessException e3) { e3.printStackTrace(); } return false; } }