android位置参数left、translationX、x、mScrollX

来源:互联网 发布:关于庞婕蕾的软件 编辑:程序博客网 时间:2024/06/05 00:35

 1.left

     left的意义就是“该视图左边界距其父元素左边界的距离”,我之前也是这么理解的,这个并没有错。然而,在此基础上,我之前还以为当视图的位置改变时,left的值会随之改变,这个并不准确。准确地来讲,“位置改变未必会引起left的值的变化,left值得变化会引起视图左边界的位置变化”。我们来看一个例子:

    图1

图2

    图中的数据描述的是那个蓝色的视图。我们发现,视图位置的变化并没有引起left值得变化(程序中是通过setX和setY来改变视图位置)。那么我们可以可以得出结论“left的值是视图的原始位置的左边界距其父元素的左边界的距离”。当然,后期我们也可以通过程序去改变left的值来改变左边界的位置,但要注意,严格来讲,这个并不能达到移动视图的效果(因为仅仅改变了左边界的位置),而且会引起视图宽度的变化。至于为什么会引起宽度变化,看一下View类的getWidth()方法即知:

[java] view plain copy
  1. public final int getWidth() {  
  2.         return mRight - mLeft;  
  3. }  


    2.translationX

    这个很好理解,当我们通过setX来改变视图的位置的时候,translationX代表的就是视图距其原始位置在x轴方向移动的距离。

    3.X

    这个指的是视图左上角那个顶点的位置,不多说,直接看View类的代码:

[java] view plain copy
  1. public float getX() {  
  2.         return mLeft + getTranslationX();  
  3. }  

    4.mScrollX

   视图内容相当于视图起始坐标的x轴方向的偏移量

0 0