DragGridViewEx.java文件:
package com.smiling.draggridview;
/*
* onInterceptTouchEvent() -> onItemLongClick() -> onTouchEvent()->ACTION_MOVE->ACTION_UP;
*
* */
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
//以下为自定义GridView控件;
public class DragGridViewEx extends GridView{
private WindowManager windowManager;// windows窗口控制类
private WindowManager.LayoutParams windowParams;// 用于控制拖拽项的显示的参数
private ImageView dragImageView;// 被拖拽的项(item),其实就是一个ImageView\
private View itemView=null;
private Bitmap bm;
private ImageView imageView;
private View dragger;
private int dragSrcPosition;// 手指拖动项在列表中的原始位置
private int dragPosition;// 手指点击准备拖动的时候,当前拖动项在列表中的位置.
private int dragPointX;
private int dragPointY;// 在当前数据项中的位置
private int dragOffsetX;
private int dragOffsetY;// 当前视图和屏幕的距离(这里只使用了y方向上)
private int upScrollBounce;// 拖动的时候,开始向上滚动的边界
private int downScrollBounce;// 拖动的时候,开始向下滚动的边界
private int tempChangeId;
private boolean isDoTouch = false;
private boolean hasAdd=false;
//=========================================================================================================
public DragGridViewEx(Context context) {
super(context);
// TODO 自动生成的构造函数存根
}
public DragGridViewEx(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO 自动生成的构造函数存根
}
public DragGridViewEx(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO 自动生成的构造函数存根
}
//=============