具体的原理描述,可以去看夏神的这个博文
效果图:
这里,采用了gridview的onLongItemClickListener,来拿到长按的view,用于拖动
解决了,原来实现中可能遇到的item消失问题
主要代码:
package com.stone.draggridview.my;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.os.Vibrator;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
/**
* author : stone
* email : aa86799@163.com
* time : 16/4/27 17 38
*/
public class MyDragGridView extends GridView implements AdapterView.OnItemLongClickListener {
private WindowManager mWindowManager;
private WindowManager.LayoutParams mLayoutParams;
private int mStatusHeight;
private Vibrator mVibrator;
private int mOffset2Left;//gv距屏幕左
private int mOffset2Top;
private int mDownX;
private int mDownY;
private int mMoveX;
private int mMoveY;
private View mStartDragView;
private ImageView mImageView;
private int mDownScrollBorder;
private int mUpScrollBorder;
private boolean mIsDrag;
private OnChanageListener onChanageListener;
private int mDragPosition;
private View mLastHiddenView;
private int mSpeed = 30;
<