在 Android 问题上旋转视图

Rotating a view on Android issue

我已经被困在一个相当恼人的问题上好几天了。

描述问题;当我对作为较大视图的一部分的视图执行旋转时,我基本上遇到了一个问题,然后我在该视图的顶部显示一个片段,然后隐藏该片段返回到原始视图。

视图保持其旋转,但放置在应有位置的上方和右侧。

在 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);

此代码应符合您的预期:

compassView.setPivotX(compassView.getMeasuredWidth() / 2);
compassView.setPivotY(compassView.getMeasuredHeight() / 2);
compassView.animate().rotation(NEW_ROTATION).setDuration(980);