android 中View测量,布局和滑动的属性区分
来源:互联网 发布:铣刀移动网络销售 编辑:程序博客网 时间:2024/05/17 01:46
getRawX():获得当前view的当前位置相对于手机窗体的水平坐标
getX():获得当前view的当前位置相对于他的父容器的水平坐标
getLeft():获得当前view初始位置的左边界相对于他的父容器左边界的水平偏移量
getScrollX():获得当前view的左边界相对于自身的内容的左边界的偏移量,可以为负值
getTranslationX():获得当前view的上一个位置相对于它的初始位置的水平偏移量
代码区分:
private int lastX;private int lastY;@Overridepublic boolean onTouchEvent(MotionEvent event) { //当move时不断获取绝对位置 int x = (int) event.getRawX(); int y = (int) event.getRawY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //只在第一次按下时将当前位置记录为起始 lastX = x; lastY = y; break; case MotionEvent.ACTION_MOVE: //获取移动前位置(即移动后的位置的上一个位置)和初始位置的偏移量 int offsetX = (int) this.getTranslationX(); int offsetY = (int) this.getTranslationY(); //获得移动后位置和移动前位置的偏移量 int dX = x - lastX; int dY = y - lastY; //获得总的偏移量并设置为最终位置 int tX = offsetX + dX; int tY = offsetY + dY; //移动到最终位置,是个moveBy()操作 this.setTranslationX(tX); this.setTranslationY(tY); break; case MotionEvent.ACTION_UP: break; } //移动完毕,将当前位置记录为下次移动的起始位置 lastX = x; lastY = y; return true;}既然要获得总偏移量int tX = offsetX + dX;),完全可以将lastX=x 删掉,比如下面的写法@Overridepublic boolean onTouchEvent(MotionEvent event) { //当move时不断获取绝对位置 int x = (int) event.getRawX(); int y = (int) event.getRawY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //在第一次按下时将当前位置记录为起始 lastX = x; lastY = y; break; case MotionEvent.ACTION_MOVE: //直接获取当前位置相对于初始位置的总偏移量 int dX = x - lastX; int dY = y - lastY; //移动到最终位置,是个moveBy()操作 this.setTranslationX(dX); this.setTranslationY(dY); break; case MotionEvent.ACTION_UP: break; } return true;}这个时候滑动一次抬起手指,再次按下会回到起始位置,因为这时lastX = x; dx =0,所以this.setTranslationX(dX);这个moveBy()操作的参数就是0,就是相对于起始位置没有移动,所以回到原位
2 0
- android 中View测量,布局和滑动的属性区分
- Android中View测量、布局及绘制原理
- Android中View测量、布局及绘制原理
- view的测量,布局,绘制
- android中view的宽高测量
- Android中View的测量模式
- Android View的测量
- Android View的测量
- Android View的测量
- Android中View的滑动
- Android 中 View 的滑动
- 自定义View,包括事件分发,滑动冲突,测量以及布局
- Android中View的宽高测量结果为0的原因和解决方法
- view的流程(测量,布局,绘制)
- ViewGroup对子View的测量与布局
- View、ViewGroup的测量、布局、绘制流程
- Android View的测量过程
- android View的测量问题
- 通过JedisPool资源池管理jedis连接
- 使用ant打包报错
- Linux core文件介绍
- 2124: 等差子序列|线段树维护哈希值
- GOF_23中设计模式之简单工厂
- android 中View测量,布局和滑动的属性区分
- iOS推送证书过期解决办法。
- c4.6
- NSURL 、NSURLRequest、NSURLConnection、NSURLSession、NSURLSessionDataTask
- text/* image/* application/* 类型理解
- DataTable转JSON
- redhat 6 配置 yum 源的两种方法
- C++中引用不能重新赋值的理解
- Android SP 介绍