2014-12-01 80 views
0

我有幾個我想要動畫的TextView。我想使用相同的動畫,但是每個TextView在不同的時間開始。我搜索,但無法找到如何。我嘗試setStartOffset,但似乎我沒有按照指示使用。有人可以幫助我嗎? 這是我的代碼:在不同的元素在不同的時間使用相同的動畫

TranslateAnimation animation = new TranslateAnimation(
    Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, 0.0f, 
    Animation.ABSOLUTE, -1500.0f, Animation.ABSOLUTE, 0.0f); 
    animation.setDuration(3000); 
    tvNumero1.startAnimation(animation); 

    //this fails: 
    animation.setStartOffset(300); 
    tvNumero2.startAnimation(animation); 
+0

您是否試過定義兩個動畫對象,每個對象一個? Handler方法可能會過度,因爲Android已經爲您提供了正在使用的偏移量。 – Toguard 2014-12-01 21:57:02

回答

3

我創建不同的動畫元素,或者,你可以使用一個animaiton從XML資源。下面的代碼:

//First Animation 
TranslateAnimation animation = new TranslateAnimation(
    Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, 0.0f, 
    Animation.ABSOLUTE, -1500.0f, Animation.ABSOLUTE, 0.0f); 
animation.setDuration(3000); 
tvNumero1.startAnimation(animation); 

//Second Animation 
TranslateAnimation animation2 = new TranslateAnimation(
    Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, 0.0f, 
    Animation.ABSOLUTE, -1500.0f, Animation.ABSOLUTE, 0.0f); 
animation2.setDuration(3000); 
animation2.setStartOffset(300); 
tvNumero2.startAnimation(animation2); 

或者,您也可以在XML文件中定義動畫:

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="3000" 
    android:fromYDelta="-1500" 
    android:toYDelta="0" > 

</translate> 

這裏是XML代碼:

Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.text_move); 
tvNumero1.startAnimation(animation); 

Animation animation2 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.text_move); 
animation2.setStartOffset(300); 
tvNumero2.startAnimation(animation2); 

前面的代碼似乎是在等待對於偏移量,然後啓動整個動畫,我將其更改爲3秒,然後開始3秒。

+0

非常感謝你Toguard。他正在尋找。代碼的選擇曾經想過,但我需要的東西會使用更少的代碼,因爲我需要許多相同的動畫(這是元素的下雨)。 XML代碼的選擇是完美的。非常感謝您的寶貴時間 – 2014-12-02 15:38:27

相關問題