Android坐标和mScrollX/Y的含义
来源:互联网 发布:淘宝的医疗器械标签 编辑:程序博客网 时间:2024/05/14 12:20
首先说一下Android坐标:
坐标的原点在屏幕的左上角(0,0),水平向右为正X,竖直向下为正Y
view和MotionEvent(触摸事件)中获取的位置关系图如下:
图中 那个深蓝色的点代表的是:手指触摸点
涉及到的方法一共有下面几个:
view获取自身坐标:getLeft(),getTop(),getRight(),getBottom()
view获取自身宽高:getHeight(),getWidth()
motionEvent获取坐标:getX(),getY(),getRawX(),getRawY()
备注:view获取位置方法里面没有getX()和getY()
view自身宽高:view控件的大小,其余的都是矢量坐标,只是有的是相对于父容器,有的是相对于屏幕边缘(这种的我们称之为绝对坐标)
关于上图的详细解释参考:
http://blog.csdn.net/jason0539/article/details/42743531
和
http://blog.csdn.net/yanbober/article/details/50419117
从图中我们可以理解:view内容其实也占用了view的内部空间,有时候会占满,有时候不会。比如ImageView显示图片时内容就占满ImageView,Button显示文字的时候,文字就是BUtton的内容,但是没有占满Button
mScrollX/Y的含义
mScrollX一般出现在动画设计里,mScrollX含义是:view内容左上顶点指向view左上角的矢量(可正,可负)这就好比是有一个橡皮筋,一边连接view左上点,一边连接view内容的左上点,橡皮筋有收缩力,那么这个力指向谁呢?我们知道view一旦布局完成,其位置参数一般不会变动,也就是说view整体的位置相对于父容器不会改变,因为如果这样的话会影响父容器中其他view布局的改变(我估计设计view布局体系的时候考虑过,子view的控制权大还是父view的控制权大,view内容也相当于view里面的子view,显然以父view为控制点会减少整个view体系因为某一处变化而重绘这一过程带来的系统开销,举个例子:如果在整个view体系中,嵌套最深的那个view在父容器中发生移动,如果以子view为控制点这一思想的话,那么父容器相对于这个view的位置就变化了,父容器一旦改变布局,那么父容器的父容器也就会改变,一直延伸到顶层容器,这样的开销很大;而执行以父容器为控制点这一思想,我们只需处理子view在父容器中的位置即可,)以父容器为控制点的根据还有:Android中view体系的设计就是父容器管理子容器,父容器管理子view,父容器分发事件
结论
以父容器为控制点,mScrollX就是view内容指向view左上角的矢量(坐标系还是以右下为正)。所以将view内容向右滑动,mScrollX为负值。view内容向下移动,mScrollX为负值
- Android坐标和mScrollX/Y的含义
- View的mScrollX,mScrollX
- View的mScrollX和mScrollY
- View-屏幕坐标 Content-网页(内容)坐标 mScrollX和mScrollY-屏幕坐标偏移
- View的位置参数mLeft,mRight,mTop,mBottom,mScrollX,mScrollY,x,y,translationX,translationY
- 投影坐标系 X和Y坐标的位数
- 构造方法------使用构造方法设置x和y的值,x和y是坐标
- 获取view的y坐标
- Android scrollBy(x,y)和scrollTo(x,y)的区别
- Android的Orientation Sensor三个坐标的含义
- Android中的坐标及各种获取尺寸方法的含义
- android onTouchListener中滑动时,x坐标和y坐标如何分布——轮播制作(二)
- C1FlexGridClassic中根据x坐标和y坐标定位行列
- android的实际加速度x 和 y
- 取得当前鼠标的X,Y坐标
- 取得当前鼠标的X,Y坐标
- 取得当前鼠标的X,Y坐标
- 取得当前鼠标的X,Y坐标
- python 基础3 使用字符串
- Android 开发环境配置--实现第一个app “hello world!”
- leetcode 8. String to Integer (atoi)
- HashMap知识点总结
- [NOIP2007] Hanoi双塔问题-解题报告
- Android坐标和mScrollX/Y的含义
- [HAOI2007] 理想的正方形 解题报告
- 浮点数理解梳理
- Heron 编译错误:no such package ‘@org_apache_thrift_libthrift//jar’
- Linux磁盘管理之LVM及RAID管理一之LVM管理
- linux shell数据重定向(输入重定向与输出重定向)详细分析
- 数据结构学习日记2——栈
- Android圆形进度条-RoundProgressBar
- [LeetCode]Combination Sum II