2010-09-10 71 views
0

动画仅影响小部件的绘制,这意味着动画完成后,我的FrameLayout screenMain仍处于其以前的位置,您需要在下一个位置设置FrameLayout。Android动画不会影响布局

screenMain.setOnClickListener(new View.OnClickListener() { 
     int i = 0; 

     @Override 
     public void onClick(View view) { 
      if (i % 2 == 0) { 
       screenMain.startAnimation(translate); 
       sh.startAnimation(translate); 
       sg.startAnimation(translate); 
       i++; 
      } else { 
       screenMain.startAnimation(translateb); 
       sh.startAnimation(translateb); 
       sg.startAnimation(translateb); 
       i++; 

      } 

     } 

    }); 

代码动画

<?xml version="1.0" encoding="utf-8"?> 
<set> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXDelta="0.0" 
     android:toXDelta="0.0" 
     android:fromYDelta="0.0" 
     android:toYDelta="180.0" 
     android:duration="200" 
     android:fillAfter="true" 
     android:fillEnabled="true" 
     /> 
</set> 

代码animationb

<?xml version="1.0" encoding="utf-8"?> 
<set> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXDelta="0.0" 
     android:toXDelta="0.0" 
     android:fromYDelta="180.0" 
    android:toYDelta="0.0" 
     android:duration="200" 
     android:fillAfter="true" 
    android:fillEnabled="true" /> 
</set> 

回答

0

要更改视图的位置,你需要调用view.setLayoutParams()。实现这种动画效果的简单方法是首先将setLayoutParams()调用到结束位置,然后从原始位置调用TranslateAnimation。

这里有更多的细节如何:http://www.clingmarks.com/?p=400

+0

什么是动画和意见 布局之间的关系因其中,动画后,视图位置不 一样的动画之前? – dfgmorgan 2010-09-10 16:09:21

+1

翻译动画实际上并没有改变视图的位置。它更改 绘制的位置,而不是它在布局中的位置。 – dfgmorgan 2010-09-10 16:28:30