2013-07-24 103 views
1

我有一個活動(A)在計算後啓動另一個活動(B)。我的問題是,當啓動活動B時,應該從大到小(從0.33縮放到1)時從左向右移動的箭頭可以在非常短的時間內顯示,然後才能開始補間動畫。最終結果是在開始動畫之前,全尺寸可繪製的閃爍。在補間動畫之前顯示的可繪製的圖形

一切似乎都指出問題與動畫文件(.xml)而不是java類有關。

protected void arrowAnimation(Animation arrowExtent) { 
     // TODO Auto-generated method stub 

     arrowImage.setImageResource(R.drawable.arrowimage); 
     arrowImage.startAnimation(arrowExtent); 
     arrowExtent.setFillAfter(true); 

我曾嘗試以下:

  1. 使用setImageDrawable代替setImageResource到可繪製對象這可以當我刪除該行arrowImage.startAnimation(arrowExtent);在下面的代碼中觀察到。
  2. 設置arrowImage.setFillBefore(false);

任何建議,將不勝感激。

動畫XML如下:

<?xml version="1.0" encoding="utf-8"?> 

<set android:interpolator="@android:anim/accelerate_decelerate_interpolator"> 
    <scale 
     android:fromXScale="0.33" 
     android:toXScale="1.0" 
     android:fromYScale="0.0" 
     android:toYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:startOffset="0" 
     android:duration="1000" 
     android:fillBefore="false" /> 

    <translate 
     android:fromXDelta="0%" 
     android:toXDelta="75%p" 
     android:duration="1000" /> 

</set> 

回答

0

當活動開始,你應該讓ImageView無形之中xmlonCreate()和當動畫開始時,您應該將其更改爲可見。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    // referencing views etc. 
    arrowImage.setVisibility(View.INVISIBLE); 
    // or make image invisible in xml 
} 

protected void arrowAnimation(Animation arrowExtent) { 
    arrowExtent.setAnimationListener(new AnimationListener() { 

     @Override 
     public void onAnimationStart(Animation animation) { 
      arrowImage.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { } 

     @Override 
     public void onAnimationEnd(Animation animation) { } 
    }); 

    arrowImage.setImageResource(R.drawable.arrowimage); 
    arrowImage.startAnimation(arrowExtent); 
} 
+0

感謝您的建議,我忘了提的是,爲了能夠使用在活動B上下文菜單,我不得不搬到從'的onCreate(')的動畫'onWindowsFocusChanged()'。我之前在'onCreate()'中嘗試過動畫並獲得了相同的結果。建議的代碼不能解決問題,我注意到當'arrowImage.startAnimation(arrowExtent)'被稱爲可見或不可見繪圖時,繪製。 – javiere

+0

另外,嘗試以下內容以查看我是否觀察到某些提示,然後執行了操作。我在'ArrowAnimation()'中試過'arrowExtent.setStartOffset(1000)'。其結果是:1.箭頭圖像閃爍。 2.一秒鐘沒事。 3.隨着動畫的進展,動畫以縮放和變形的方式開始。所以我的直覺告訴我,動畫xml文件在開始之前就在屏幕上繪製了箭頭圖像。我張貼動畫xml。 – javiere