旋转ImageView的动画

时间:2013-08-16 03:53:40

标签: java android animation rotation rotateanimation

我有相机应用程序。每当设备方向从纵向更改为横向,反之亦然时,我想将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与其他旋转参数,而不是使用相同的角度?

1 个答案:

答案 0 :(得分:0)

使用普通视图动画为视图设置动画时,您只需设置绘制它的位置的动画。您没有影响其在布局中的实际位置。假设您打算永久地进行视图更改位置,则需要在动画完成后更新视图的布局参数,以匹配您对动画所做的移动。

或在动画之后,再次使用适当的布局xml执行setContentView ..