Android View滑动
来源:互联网 发布:ee是哪个国家域名 编辑:程序博客网 时间:2024/06/06 13:03
学习笔记:使用Android坐标系和视图坐标系两种方法实现View拖动效果。
private float lastX;
private float lastY;
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.e(TAG,"onTouchEvent --> " + event.getAction());
return method2(event);
}
/**
* Android 坐标系
* 1,点下手指记录点击位置在屏幕上的坐标lastX lastY;
* 2,移动手指更新手指的相对于屏幕的坐标x y;
* 3,计算手指移动的偏移量,通过layout方法重新设置View的位置;
* 4,因为用的是Android坐标系,参考系是屏幕,移动前后手指位置发生了改变;
* 5,更新手指位置lastX和lastY的坐标。
*/
private boolean method2(MotionEvent event) {
float x = event.getRawX();
float y = event.getRawY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://0
lastX = x;
lastY = y;
break;
case MotionEvent.ACTION_MOVE://2
int offsetX = (int) (x -lastX);
int offsetY = (int) (y -lastY);
layout(getLeft() + offsetX,getTop() + offsetY, getRight() + offsetX,getBottom() + offsetY);
//note:需要更新lastX和lastY,因为使用的是Android坐标系,执行完layout方法后坐标系是改变了的。
lastX = x;
lastY = y;
break;
case MotionEvent.ACTION_UP://1
break;
case MotionEvent.ACTION_CANCEL://3
break;
case MotionEvent.ACTION_OUTSIDE://4
break;
}
return true;
}
/**
* 视图坐标系方法
* 1,点下手指记录点击位置在View上的坐标lastX lastY;
* 2,移动手指更新手指的相对于View的坐标x y;
* 3,计算手指移动的偏移量,通过layout方法重新设置View的位置;
* 4,执行完layout方法后,手指点击的坐标和移动前的坐标保持一致。
*/
private boolean method1(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://0
lastX = x;
lastY = y;
break;
case MotionEvent.ACTION_MOVE://2
int offsetX = (int) (x -lastX);
int offsetY = (int) (y -lastY);
Log.e(TAG,"offsetX --> " + offsetX);
Log.e(TAG,"offsetY --> " + offsetY);
Log.e(TAG,"getLeft() --> " + getLeft());
Log.e(TAG,"getTop() --> " + getTop());
//note: 不用重新设置lastX和lastY的值,执行完layout方法就相当于重新归位了。
//lastX和lastY是手指在View上的点击位置(相对于View的视图坐标),执行layout方法前后手指在View上的坐标lastX和lastY值是一样的。
layout(getLeft() + offsetX,getTop() + offsetY, getRight() + offsetX,getBottom() + offsetY);
break;
case MotionEvent.ACTION_UP://1
break;
case MotionEvent.ACTION_CANCEL://3
break;
case MotionEvent.ACTION_OUTSIDE://4
break;
}
return true;
}
- android 滑动view
- android view 滑动
- Android View滑动
- Android View滑动
- Android之滑动view
- Android View的滑动
- Android View的滑动
- android 实现 view 滑动
- Android view随触碰滑动
- android view 上下左右滑动 事件
- Android 自定义滑动容器View
- Android中View的滑动
- Android 实现view手势滑动
- Android:View滑动与自定义
- android View滑动冲突解决
- Android 中 View 的滑动
- android view 滑动冲突解决办法
- Android开发艺术View滑动
- 概率图模型(07): 从思路到模型(Knowledge Engineering)
- socket 通信关于bind那点事
- 遍历Map的四种方法
- BZOJ 3295: [Cqoi2011]动态逆序对 (树状数组套主席树)
- 计蒜客挑战难题:爬楼梯
- Android View滑动
- [例证]从滑动冲突到事件分发(从源码角度分析)
- Android开发笔记之软键盘的隐藏
- js如何判断一个对象是不是Array?
- 字符设备驱动访问原理
- [ERROR] Cannot find or open table wu777/processlist from the internal data dictionary of InnoDB tho
- Android不同api调用显示路径
- 1007: [HNOI2008]水平可见直线
- ckeditor源码编辑模式,添加style、javascript内容丢失的解决