2011-10-06 107 views
1

我想使用ViewAnimator從一個視圖轉換到另一個視圖(在我的測試應用程序中,視圖是TextView)。下面列出了我的兩個動畫。我看到的行爲都是動畫,只要我觸發animator就開始動畫,而不是讓InAnimation運行,並且一旦它完成了OutAnimation運行。我看到的東西看起來像一個風車 - 旋轉出來的視圖垂直於旋轉的視圖。我想看到旋轉的視圖從它的正常水平位置(0度)到垂直(90度);然後我想看到旋轉的視圖從垂直(-90度)到水平(0度)。ViewAnimator使用旋轉動畫在視圖之間轉換

@阿尼姆/ rotate_out.xml

<?xml version="1.0" encoding="UTF-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="0" android:toDegrees="90" android:pivotX="50%" 
    android:pivotY="50%" android:repeatCount="0" android:duration="500" 
    android:interpolator="@android:anim/linear_interpolator"> 
</rotate> 

@阿尼姆/ rotate_in.xml

<?xml version="1.0" encoding="UTF-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="-90" android:toDegrees="0" android:pivotX="50%" 
    android:pivotY="50%" android:repeatCount="0" android:duration="500" 
    android:interpolator="@android:anim/linear_interpolator"> 
</rotate> 

,並在主要活動的onCreate ...

va = (ViewAnimator) findViewById(R.id.ViewFlipper01); 
va.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_in)); 
va.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_out)); 

什麼想法?

回答

3

也許? @

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <rotate xmlns:android="http://schemas.android.com/apk/res/android" 
     android:fromDegrees="0" android:toDegrees="90" android:pivotX="50%" 
     android:pivotY="50%" android:repeatCount="0" android:duration="500" 
     android:interpolator="@android:anim/linear_interpolator"> 
    </rotate> 
    <rotate xmlns:android="http://schemas.android.com/apk/res/android" 
     android:fromDegrees="0" android:toDegrees="90" android:pivotX="50%" 
     android:pivotY="50%" android:repeatCount="0" android:duration="500" 
     android:interpolator="@android:anim/linear_interpolator"> 
    </rotate> 
</set> 
+0

我爲InAnimation和OutAnimation設置了什麼,因爲現在只有一個anim xml文件? –

2

ViewAnimator的源代碼可以發現here動畫/ rotate_outin.xml。根據showOnly()方法,故意將兩個動畫並行開始,因此當一個視圖「移出」時,另一個視圖已經「移入」。 所以要實現你的目標,你必須在動畫中添加一些延遲,以便在動畫完成時開始。你可以設置例如android:duration =「500」用於out-animation,android:startOffset =「500」用於in-animation。只要確保兩者的值相同即可。