在Android问题上旋转视图

时间:2015-03-26 13:32:00

标签: android animation android-fragments layout rotation

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

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

视图保持其旋转但位于其应该位于的上方和右侧。

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

1 个答案:

答案 0 :(得分:1)

此代码应该符合您的预期:

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