View 的 translationX、 translationY , X、Y 和 Left、Top,Right、Bottom
网上有不少人把view的坐标和点击事件的坐标 混为一谈
一、View的相关坐标和位置
先来看一张图,对这几个值有个大概了解,下面再进行详细的分析
先来了解一个概念:
view动画不改变view的真实位置,就是肉眼看上去,view位置发生了变化,但是它的点击区域还是在原来的位置。
属性动画和setTranslationX/setTranslationY ,会改变显示位置和真实位置
上图中view1是初始位置,通过执行setTranslation函数,得到的view2位置,其中left,top,right,bottom这几个值不会改变
1、left,top,right,bottom
View 的位置主要由它的四个顶点的位置来决定,分别对应 View 的四个属性:left top right bottom。对应的函数是getLeft,getTop,getRight,getBottom
left: View 左上顶点相对于父容器的横坐标
top: View 左上顶点相对于父容器的纵坐标
right: View 右下顶点相对于父容器的横坐标
bottom: View 右下顶点相对于父容器的纵坐标
这几个值表示的是view的真身位置,它表示哪里,点击区域就在哪里。和肉眼在屏幕上看到的位置可能不一样
2、 X,Y
从 Android 3.0 开始,View 增加了 x,y,translationX 和 translationY。
x,y 同样是 View 左上角相对父容器的坐标,但不同于 left 和 top ,这两个坐标点的值并一定都是相等的。
而不相等的情况是由 translationX 和 translationY 值的设置引起的。
3、 translationX,translationY
android开发艺术探索中,关于translationX的讲解是错误的。真实情况是,translationX是view 相对于它自身位置的偏移量
也就是肉眼看到的view的位置,和真实的view的位置的偏移量。
从上图可以得知:x = left + translationX
二、点击事件的XY坐标
参考:
View坐标系
Android - 区分 View 的 translationX、Y , X、Y 和 Left、Top,Right、Bottom
关注我的公众号,轻松了解和学习更多技术