最近由于项目需要,做一个比较复杂的3D动画,核心就是根据手指的滑动来翻转3D效果。因此,又回顾了一下view滑动效果,而且根据不同的方式实现了一下,发现其中很多参数容易搞混,比如改变view的left,marginLeft,translationX中的任意一个值,对另外2个值及其getX是否有影响,因此,做了一下实验,发现挺有意思,结果如下:
注:第三行,是设置了android:layout_centerInParent=”true”的结果,因此图片也滑动不了了。如果去掉此设置,getLeft是随着leftMargin而改变的!
从上面的数据来看,这几个view的参数之间的值相互之间不影响。同理right, marginRight, translationX和top, marginTop, translationY以及bottom, marginBottom, translationY都能得到相同的答案。
另外一点很重要,就是无论如何变化,始终有如下关系:
view.getX() = view.getLeft() + view.getTranslationX();
这个其实根据View.getX()的代码也能证明:
/**
* The visual x position of this view, in pixels. This is equivalent to the