我已经被困在一个非常恼人的问题上了好几天了。
描述问题;当我在一个视图上执行旋转时,我基本上遇到了一个问题,该视图是一个较大视图的一部分,然后我在这个视图的顶部显示一个片段,然后隐藏这个片段返回到原始视图。
视图保持其旋转但位于其应该位于的上方和右侧。
在XML布局中,我将视图设置为在父级中居,并且在启动时确定所有内容都应该是它应该在的位置。
当视图旋转且主视图可见时(它本质上是一个指南针),一切都按预期工作
如果我不旋转视图,然后显示片段,然后隐藏它,它会保持原样没有问题,所以很明显旋转它然后在它上面显示某些东西的行为导致了问题。
如果我在视图移出位置后继续旋转视图,它会快速回到中心位置,一切都很好 - 我怎样才能确保视图始终保持在原来的位置?!?
作为参考,我正在调用旋转方法:
RotateAnimation rotate = new RotateAnimation(PREVOIUS_ROTATION_AMOUNT, NEW_ROTATION, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(980);
rotate.setRepeatCount(0);
rotate.setFillAfter(true);
compassView.startAnimation(rotate);
答案 0 :(得分:1)
此代码应该符合您的预期:
compassView.setPivotX(compassView.getMeasuredWidth() / 2);
compassView.setPivotY(compassView.getMeasuredHeight() / 2);
compassView.animate().rotation(NEW_ROTATION).setDuration(980);