前言
view的最终展示效果由view.x和view.y来决定
view.x = mLeft + translationX
view.y = mRight + tranlationY
异同
相同点:
两种方式都可以移动view。
不同点:
- offsetLeftAndRight(offset: Int)修改的是view的mLeft或mRight,其内部传入的是相对值。
- setTranslationX(translation: Int)修改的是view的translation值,传入的是translation要改为的绝对值。
其导致的问题:
当view调用layout()方法时(如view局部有刷新),offsetLeftAndRight()修改后的mLeft或mRight会被重新计算,如果不作处理,view会被移动到初始的位置;而通过setTranslationX()的方式修改的translationX不会被重新计算,view不会被移动。