2017-05-17 3 views
1

を振る、私はこのコードを書いたが、私はそれがより簡単で行うことができますどのようにアニメーションセットは、私はアニメーションに私の見解を振るしようとする効果

var animatorSet = AnimatorSet() 
    var objectRotateAnimator = ObjectAnimator.ofFloat(shake, "rotation", -5f, 5f) 
    objectRotateAnimator.apply { 
     repeatMode = ValueAnimator.REVERSE 
     repeatCount = ValueAnimator.INFINITE 
     duration = 70 
     interpolator = LinearInterpolator() 
    } 

    var objectTranslateAnimator = ObjectAnimator.ofFloat(shake, "translate", -5f, 5f) 
    objectTranslateAnimator.apply { 
     repeatMode = ValueAnimator.REVERSE 
     repeatCount = ValueAnimator.INFINITE 
     duration = 70 
     interpolator = LinearInterpolator() 
    } 

    start_shake.setOnClickListener { 
     animatorSet.play(objectRotateAnimator).with(objectTranslateAnimator) 
     animatorSet.start() 
    } 

それが簡単にすることができるように私には思えますか?

答えて

1

あなたは重複を減らすためにいくつかの機能とフィールドを抽出することができます。

private val linearInterpolator = LinearInterpolator() 

private fun shakeAnimator(propertyName: String) = 
     ObjectAnimator.ofFloat(shake, propertyName, -5f, 5f).apply { 
      repeatMode = ValueAnimator.REVERSE 
      repeatCount = ValueAnimator.INFINITE 
      duration = 70 
      interpolator = linearInterpolator 
     } 

そして、それだけで次のようになります。

start_shake.setOnClickListener { 
    AnimatorSet().apply { 
     play(shakeAnimator("rotation")).with(shakeAnimator("translate")) 
     start() 
    } 
} 

良いメソッド名を持つ中間変数の必要性を削除しましたコードをさらに短縮しました。

関連する問題