2012-10-09 86 views
3

我使用翻譯和旋轉動畫來定位裏面ViewonCreate事件中。我希望動畫立即執行,因此我將它們的持續時間設置爲0.但是,當應用程序啓動時,屏幕左上角會短暫閃爍我的View,然後根據動畫參數進行定位。我怎樣才能避免這種眨眼?如何在使用動畫時避免視圖眨眼?

回答

3

我花了整整一天的問題。 fillAfter和fillBefore與此無關。動畫開始之前,試試這個:

view.setVisibility(View.GONE); // view is our View we trying to animate 

然後設置動畫監聽動畫:

animation.setAnimationListener(new AnimationListener(){ 
     public void onAnimationEnd(Animation animation) { 
     } 

     public void onAnimationRepeat(Animation animation) { 
     } 

     public void onAnimationStart(Animation animation) { 
      v.setVisibility(View.VISIBLE); 
     } 
+1

是v並查看相同嗎? – myatmins

4

使用animation.setFillAfter(true)animation.setFillBefore(true),根據您的需要。這應該解決眨眼

+0

animation.setFillAfter(true)將工作 – jay

+0

謝謝,它已被設置爲true,但這並不能解決我的問題。我希望動畫是即時的,所以用戶只會看到'View'的結束位置而沒有看到它的開始位置。 –

+0

那你爲什麼還需要動畫呢?你爲什麼不展示你的觀點? –

2

有動畫文件的父標籤內的標籤將導致此,只有一個標籤嘗試,你會看到不同之處。我現在正在與此工作

+0

非常感謝。 –

0

Odaym的答案是實際問題的解決方案。如果你有類似的東西:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="true"> 
    <set 
     android:duration="1000"> 
     <translate 
      android:fromXDelta="100%" 
      android:toXDelta="0" 
      /> 
    </set> 
</set> 

把它變成這樣:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="true" android:duration="1000"> 
     <translate 
      android:fromXDelta="100%" 
      android:toXDelta="0" 
      /> 
</set> 
0

設置動畫執行代碼之後,但不是在「onAnimationEnd」,也儘量設置長

知名度
view.setVisibility(View.VISIBLE); // view is our View we trying to animate