2013-12-19 87 views
1

我試圖做的是將ImageView從正常大小縮放到20%,然後返回。這應該是循環的。我已經用下面的代碼完成了這個工作,但是它並不正確。更多下面。縮放動畫按預期工作不正常

動畫/ scale.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:duration="1000" 
     android:fromXScale="1.0" 
     android:fromYScale="1.0" 
     android:toXScale="1.2" 
     android:toYScale="1.2" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:fillAfter="false" /> 
    <scale 
     android:startOffset="1000" 
     android:duration="1000" 
     android:fromXScale="1.2" 
     android:fromYScale="1.2" 
     android:toXScale="1.0" 
     android:toYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:fillAfter="false" /> 
</set> 

然後在我的代碼,我做

private void scaleAnimation() { 
    final Animation scaler = AnimationUtils.loadAnimation(this, R.anim.scale); 
    scaler.setAnimationListener(new AnimationListener() { 

      @Override 
      public void onAnimationStart(Animation animation) { 
      } 

      @Override 
      public void onAnimationRepeat(Animation animation) { 
      } 

      @Override 
      public void onAnimationEnd(Animation animation) { 
       animation.reset(); 
       animation.startNow(); 
      } 
     }); 
    new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      scale.startAnimation(scaler); 
     } 
    }, 2000); 
} 

我有處理程序存在,所以我可以看到在開始發生。

問題是一種很難解釋的問題..我的圖像在動畫開始後似乎會縮小然後執行動畫。因此,圖像應該顯示2秒鐘。正如動畫開始,它突然變得更大,看起來是25% - 50%,然後動畫正確執行。一旦動畫結束,圖像會很快調整到原始大小,然後再放大,然後動畫重新開始。

我已經嘗試了幾個不同的圖像沒有區別。這是我的理解,從XScale = 1.0開始沒有縮放的動畫,即圖像。希望有人能夠闡明我做錯了什麼或者我誤解了這些概念。

乾杯

回答

4

如果你想實現什麼是可以擴展爲1.0〜1.2回到1.0不斷的視圖,你可以讓你的動畫簡單。

你會做到以下幾點: 只定義一個規模的動畫(1.0〜1.2) 設置重複次數無限 設置重複播放模式,扭轉

欲瞭解更多信息,你可以檢查出的文檔Animation class

+0

此外,您不必擔心添加自己的AnimationListeners重新開始動畫 – cheezy

+1

這很棒。完美工作,代碼少。非常好的建議,謝謝! –