2012-02-14 31 views
2

我試圖建立2個佈局 - 我想一個佈局滑動起來,而當它完成另一個佈局應該淡出的動畫漸變閃爍 - Android電子

我設法得到它的工作,但在兩個動畫和第一個佈局結束時閃爍一次。 我該如何解決它?

下面的代碼(第一佈局被命名爲titleLay,第二個叫registerLayout) -

final TranslateAnimation slide = new TranslateAnimation(0, 0, 0,-100); 
slide.setDuration(500); 
slide.setFillAfter(true); 
slide.setAnimationListener(new AnimationListener() { 

@Override 
public void onAnimationStart(Animation animation) { 


} 

@Override 
public void onAnimationRepeat(Animation animation) { 

} 

@Override 
public void onAnimationEnd(Animation animation) { 
    RelativeLayout registerLayout = (RelativeLayout) findViewById(R.id.registerLay); 
    Animation fadeInAnimation = AnimationUtils.loadAnimation(con, R.anim.fade_in_anim); 
    registerLayout.startAnimation(fadeInAnimation); 
    registerLayout.setVisibility(View.VISIBLE); 
} 
}); 

titleLay.startAnimation(slide); 

而這也是R.anim.fade_in_anim的XML代碼 -

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:duration="500"/> 
</set> 

編輯:如果我使用其他類型的動畫(淡出,幻燈片等),它工作正常,沒有輕彈。

謝謝!從onAnimationEnd thouse兩行

+0

tofira,你有沒有解決過這個問題?我有同樣的問題,並想知道你如何克服這個問題? – Byron 2012-07-01 01:02:30

回答

0

取出declerations和initilizations,因爲XML需要從資源解析的動初始化可能需要很長的時間,

把你onCreate

RelativeLayout registerLayout = (RelativeLayout) findViewById(R.id.registerLay); 
Animation fadeInAnimation = AnimationUtils.loadAnimation(con, R.anim.fade_in_anim); 

和設置幻燈片的可見性:

final TranslateAnimation slide = new TranslateAnimation(0, 0, 0,-100); 
     slide.setDuration(500); 
     slide.setFillAfter(true); 
     slide.setAnimationListener(new 

AnimationListener() { 

      @Override 
      public void onAnimationStart(Animation animation) { 


      } 

      @Override 
      public void onAnimationRepeat(Animation animation) { 

      } 

      @Override 
      public void onAnimationEnd(Animation animation) { 

       registerLayout.startAnimation(fadeInAnimation); 
       registerLayout.setVisibility(View.VISIBLE); 
      } 
      }); 

      titleLay.startAnimation(slide); 
      titleLay.setVisibilty(View.VISIBLE); 
+0

我實際上已經刪除了聲明(添加它們只是在發佈時使代碼更清晰),並沒有幫助。當我刪除'slide.setFillAfter(true);' line titleLay返回到它的原始位置(在幻燈片動畫之前),所以它也不起作用。 – Tofira 2012-02-14 22:53:31

+0

編輯我的答案 – Rotemmiz 2012-02-14 23:00:19

+0

如何設置動畫的可見性? – Tofira 2012-02-14 23:04:55

1

而不是設置視圖的可見性,請嘗試使用setAlpha函數。

registerLayout.setAlpha(0f); //invisible 

registerLayout.setAlpha(1f); //visible