Android View滑动
来源:互联网 发布:openwrt nginx服务器 编辑:程序博客网 时间:2024/06/06 10:49
学习笔记:使用Android坐标系和视图坐标系两种方法实现View拖动效果。
private float lastX;private float lastY;@Overridepublic 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;}
0 0
- 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滑动
- 获取文件大小并读取文件内容(应用在protobuf文件解析上)
- 使用Android Studio开发ndk-Jni(入门)
- C++实现学生信息管理系统
- iOS关于界面跳转的几种方法
- android 自定义ListView的点选样式。
- Android View滑动
- 图片的二进制数据库存储和显示
- Spring MVC 4 学习5: 配置数据源(proxool连接池)及使用例子
- error: format not a string literal and no format arguments
- js操作select option
- Cocos2d-x v3.x 的事件派发机制(消息处理机制CCNotificationCenter)
- window 下修改mysql 数据库的密码
- Java变量以及内存分配
- 内存泄露的解释