天天看點

Android屬性動畫 AnimatorSetAnimatorSetplayTogetherplaySequentiallyafter(Animator anim)before(Animator anim)after(long delay)with(Animator anim)

轉載請标明出處:http://blog.csdn.net/zhaoyanjun6/article/details/118766558

本文出自【趙彥軍的部落格】

文章目錄

  • AnimatorSet
  • playTogether
  • playSequentially
  • after(Animator anim)
  • before(Animator anim)
  • after(long delay)
  • with(Animator anim)

AnimatorSet

實作組合動畫功能主要需要借助

AnimatorSet

這個類.

playTogether

多個動畫一起執行。

var myView: Button = findViewById(R.id.bt)

var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f)
var translationX = ObjectAnimator.ofFloat(myView, "translationX", 0f, 360f)

val set = AnimatorSet()
set.playTogether(rotation, translationX)
set.duration = 2000
set.interpolator = LinearInterpolator()
set.start()
           
Android屬性動畫 AnimatorSetAnimatorSetplayTogetherplaySequentiallyafter(Animator anim)before(Animator anim)after(long delay)with(Animator anim)

playSequentially

多個動畫順序執行。

var myView: Button = findViewById(R.id.bt)
        
var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f)
var translationX = ObjectAnimator.ofFloat(myView, "translationX", 0f, 360f)

val set = AnimatorSet()
set.playSequentially(rotation, translationX)
set.duration = 2000
set.interpolator = LinearInterpolator()
set.start()
           
Android屬性動畫 AnimatorSetAnimatorSetplayTogetherplaySequentiallyafter(Animator anim)before(Animator anim)after(long delay)with(Animator anim)

after(Animator anim)

将現有動畫插入到傳入的動畫之後執行

var myView: Button = findViewById(R.id.bt)

var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f)
var translationX = ObjectAnimator.ofFloat(myView, "translationX", 0f, 360f)

val set = AnimatorSet()
set.play(rotation).after(translationX)
set.duration = 2000
set.interpolator = LinearInterpolator()
set.start()
           

旋轉動畫

插入到

平移動畫

之後。是以總體效果是:

先執行平移動畫,然後再執行旋轉動畫

Android屬性動畫 AnimatorSetAnimatorSetplayTogetherplaySequentiallyafter(Animator anim)before(Animator anim)after(long delay)with(Animator anim)

before(Animator anim)

将現有動畫插入到傳入的動畫之前執行。

var myView: Button = findViewById(R.id.bt)

var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f)
var translationX = ObjectAnimator.ofFloat(myView, "translationX", 0f, 360f)

val set = AnimatorSet()
set.play(rotation).before(translationX)
set.duration = 2000
set.interpolator = LinearInterpolator()
set.start()
           

旋轉動畫

插入到

平移動畫

之前。是以總體效果是:

先執行旋轉動畫,然後再執行平移動畫

Android屬性動畫 AnimatorSetAnimatorSetplayTogetherplaySequentiallyafter(Animator anim)before(Animator anim)after(long delay)with(Animator anim)

after(long delay)

将現有動畫插入到傳入的動畫之後執行。相當于延遲執行。

var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f)
var translationX = ObjectAnimator.ofFloat(myView, "translationX", 0f, 360f)

val set = AnimatorSet()
set.play(rotation).before(translationX).after(2000)
set.duration = 2000
set.interpolator = LinearInterpolator()
set.start()
           

先把 rotation 放在 translationX 之前,執行順序是:

rotation -> translationX

然後把整體動畫放在 after(2000) 之後,執行順序是 :

延遲 2 秒 -> rotation -> translationX

Android屬性動畫 AnimatorSetAnimatorSetplayTogetherplaySequentiallyafter(Animator anim)before(Animator anim)after(long delay)with(Animator anim)

with(Animator anim)

多個動畫同時執行。

var myView: Button = findViewById(R.id.bt)

var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f)
var translationX = ObjectAnimator.ofFloat(myView, "translationX", 0f, 360f)
var alpha = ObjectAnimator.ofFloat(myView, "alpha", 0f, 1f)

val set = AnimatorSet()
set.play(rotation).with(translationX).after(alpha)
set.duration = 2000
set.interpolator = LinearInterpolator()
set.start()
           

旋轉動畫 和 平移動畫一起執行,然後整體放在 alpha 動畫後面。是以整體執行順序是:

先執行 alpha 動畫,然後一起執行 旋轉動畫、平移動畫。

Android屬性動畫 AnimatorSetAnimatorSetplayTogetherplaySequentiallyafter(Animator anim)before(Animator anim)after(long delay)with(Animator anim)