Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换
2015-12-30 11:34
501 查看
点击打开链接
修复点击空白处滑动crash的bug.
case MotionEvent.ACTION_MOVE:
if (mDragPosition == AdapterView.INVALID_POSITION) {
return super.dispatchTouchEvent(ev);
}
int moveX = (int) ev.getX();
int moveY = (int) ev.getY();
//如果我们在按下的item上面移动,只要不超过item的边界我们就不移除mRunnable
if (!isTouchInItem(mStartDragItemView, moveX, moveY)) {
mHandler.removeCallbacks(mLongClickRunnable);
}
break;
case MotionEvent.ACTION_UP:
if (mDragPosition == AdapterView.INVALID_POSITION) {
return super.dispatchTouchEvent(ev);
}
mHandler.removeCallbacks(mLongClickRunnable);
mHandler.removeCallbacks(mScrollRunnable);
break;
}
return super.dispatchTouchEvent(ev);
}
//用来处理是否为长按的Runnable
private Runnable mLongClickRunnable = new Runnable() {
@Override
public void run() {
isDrag = true; //设置可以拖拽
mVibrator.vibrate(50); //震动一下
if (mStartDragItemView != null) {
mStartDragItemView.setVisibility(View.INVISIBLE);//隐藏该item
//根据我们按下的点显示item镜像
createDragImage(mDragBitmap, mDownX, mDownY);
}
}
};
修复点击空白处滑动crash的bug.
case MotionEvent.ACTION_MOVE:
if (mDragPosition == AdapterView.INVALID_POSITION) {
return super.dispatchTouchEvent(ev);
}
int moveX = (int) ev.getX();
int moveY = (int) ev.getY();
//如果我们在按下的item上面移动,只要不超过item的边界我们就不移除mRunnable
if (!isTouchInItem(mStartDragItemView, moveX, moveY)) {
mHandler.removeCallbacks(mLongClickRunnable);
}
break;
case MotionEvent.ACTION_UP:
if (mDragPosition == AdapterView.INVALID_POSITION) {
return super.dispatchTouchEvent(ev);
}
mHandler.removeCallbacks(mLongClickRunnable);
mHandler.removeCallbacks(mScrollRunnable);
break;
}
return super.dispatchTouchEvent(ev);
}
//用来处理是否为长按的Runnable
private Runnable mLongClickRunnable = new Runnable() {
@Override
public void run() {
isDrag = true; //设置可以拖拽
mVibrator.vibrate(50); //震动一下
if (mStartDragItemView != null) {
mStartDragItemView.setVisibility(View.INVISIBLE);//隐藏该item
//根据我们按下的点显示item镜像
createDragImage(mDragBitmap, mDownX, mDownY);
}
}
};
相关文章推荐
- android 启动页面的设置
- android不依赖具体activity弹出Dialog对话框,即全局性对话框
- Windows系统下安装 Android Studio 的步骤记录
- Android AudioPolicyService和AudioPolicyManager
- Android studio使用简单的GsonFormat插件
- android 软件键盘
- android 百分比layout布局
- Android中Activity四种启动模式和taskAffinity属性详解
- Android拍照得到全尺寸图片并进行压缩
- 2015年十大热门Android开源新项目
- 关于Android开发里面的大部分图表
- Android判断应用是否是从后台回到前台
- android缓存Bitmap
- Android:活动的简单使用
- Android studio项目添加Androidannotations注解框架
- Android注解框架对比
- 盘点2015年十大热门Android开源新项目
- 使用ViewFlipper实现公告播放
- Android自定义控件入门实践之雷达扫描控件
- 基于Android实现仿QQ5.0侧滑