2016-05-26 10 views
1

私はこのアニメーションをちょっと拡大して元のサイズに戻します。しかし、元のサイズにスケールダウンすると、ゆっくりとスケールダウンし、そのサイズは突然元のサイズになります。そして、いいえ、それは加速減速インターポレータではなく、私も線形のものを試して、それは同じでした。アンドロイドスケールのアニメーションが突然元のサイズに戻ります

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:startOffset="1000" 
    android:shareInterpolator="true"> 
    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" 
     android:duration="1000" /> 
    <scale 
     android:duration="1000" 
     android:fromXScale="1.0" 
     android:fromYScale="1.0" 
     android:pivotX="25%p" 
     android:pivotY="75%p" 
     android:toXScale="1.1" 
     android:toYScale="1.1" /> 
    <set 
     android:startOffset="500"> 
     <scale 
      android:duration="1000" 
      android:fromXScale="1.1" 
      android:fromYScale="1.1" 
      android:pivotX="25%p" 
      android:pivotY="75%p" 
      android:toXScale="1.0" 
      android:toYScale="1.0" /> 
    </set> 
</set> 

答えて

1

最初のスケールのアニメーションの継続時間は1000です。第2のアニメーションの継続時間は500ms後に開始されます。だから彼らは干渉している。多分それがあなたの問題です。これは

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:fillAfter="true" 
android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
android:shareInterpolator="true" 
android:startOffset="1000"> 
<alpha 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0" 
    android:duration="1000" /> 
<scale 
    android:duration="1000" 
    android:fromXScale="1.0" 
    android:fromYScale="1.0" 
    android:pivotX="25%p" 
    android:pivotY="75%p" 
    android:toXScale="1.1" 
    android:toYScale="1.1" /> 
<scale 
    android:duration="1000" 
    android:fromXScale="1.0" 
    android:fromYScale="1.0" 
    android:pivotX="25%p" 
    android:pivotY="75%p" 
    android:startOffset="1000" 
    android:toXScale="0.9" 
    android:toYScale="0.9" /> 
</set> 

を動作し、あなたが持っている必要はありません:あなたは、これはあなたがAnimation.fillAfter()

EDITを見てみることができ解決できない場合は1000に開始オフセット秒のアニメーションを設定しようとすることができ2番目のセットがセット内にある場合は、startOffsetを直接スケールアニメーションに追加します。

そして、私は、2番目のスケールが1.1と1.0の代わりに1.0と0.9を使用しなければならないことに気付きました。元のサイズではなく、現在のサイズの割合が必要なためです。

+0

秒のアニメーションのstartOffsetを設定するのが少し助けになりましたが、それでも元のサイズに突然低下しました。私は充てんが違いを作ったとは思わない。 – user3622171

+0

テスト済みです。ルート要素のfillAfterは私のためのトリックです: –

0

1)そういうことができると思います。位置とスケールとプロパティは、元のものに変わりません。

 view.animate() 
      .setDuration(1000) 
      .alpha(1) 
      .x(view.getPivotX() * 25/100) 
      .y(view.getPivotX() * 25/100) 
      .scaleX(1.1f) 
      .scaleY(1.1f) 
      .start(); 

    view.animate() 
      .setStartDelay(1000) 
      .setDuration(1000) 
      .scaleX(1f) 
      .scaleY(1f) 
      .start(); 

2)アニメーションの再生時間は1000msで、2回目の再生時間は500秒です。問題の原因かもしれません。

関連する問題