我有相机应用程序。每当设备方向从纵向更改为横向,反之亦然时,我想将ImageView设置为他的动画。
这是我的代码,动画仅在第一组上完成,如果方向更改的事件再次发生,则没有任何反应。
以下是代码:
@Override
public void onSensorChanged(SensorEvent event) {
if (event.values[1]<6.5 && event.values[1]>-6.5) {
if (orientation!=1) { // Portrait
animation = new RotateAnimation(0,90,RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f);
animation.setFillAfter(true);
animation.setFillEnabled(true);
animation.setDuration(0);
imageView.setAnimation(animation);
}
orientation=1;
} else {
if (orientation!=0) { // Landscape
animation = new RotateAnimation(0,270,RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f);
animation.setFillAfter(true);
animation.setFillEnabled(true);
animation.setDuration(0);
imageView.setAnimation(animation);
}
orientation=0;
}
}
为什么会发生这种情况,如何确保每当事件发生时我的动画将应用于我的imageView与其他旋转参数,而不是使用相同的角度?
答案 0 :(得分:0)
使用普通视图动画为视图设置动画时,您只需设置绘制它的位置的动画。您没有影响其在布局中的实际位置。假设您打算永久地进行视图更改位置,则需要在动画完成后更新视图的布局参数,以匹配您对动画所做的移动。
或在动画之后,再次使用适当的布局xml执行setContentView ..