Animator属性动画,可以理解为:加强版的补间动画。可以对任何对象执行动画,没错,就是任何对象!
一般是使用Animator下的两个子类,其中,ObjectAnimator用的比较多。
使用步骤:
1、声明一个ObjectAnimator对象,然后通过ObjectAnimator.onFloat()等方法来给该对象赋值。
2、调用ObjectAnimator对象的setDuration(2000l)设置动画时间。
3、调用ObjectAnimator对象的start()方法调用即可。
实例代码:
package com.deepreality.objectanimationdemo; import android.animation.ObjectAnimator; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btnAnimOne, btnAnimTwo, btnAnimThree, btnAnimFour; private TextView tvShow; private ObjectAnimator objectAnimator1; private ObjectAnimator objectAnimator2; private ObjectAnimator objectAnimator3; private ObjectAnimator objectAnimator4; private int height = 200; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bindViews(); viewAddListener(); objectAnimatorInit(); } private void bindViews() { btnAnimOne = findViewById(R.id.main_btnAnimOne); btnAnimTwo = findViewById(R.id.main_btnAnimTwo); btnAnimThree = findViewById(R.id.main_btnAnimThree); btnAnimFour = findViewById(R.id.main_btnAnimFour); tvShow = findViewById(R.id.main_tvShow); } private void viewAddListener() { btnAnimOne.setOnClickListener(this); btnAnimTwo.setOnClickListener(this); btnAnimThree.setOnClickListener(this); btnAnimFour.setOnClickListener(this); } private void objectAnimatorInit() { //渐变 objectAnimator1 = ObjectAnimator.ofFloat(tvShow, "alpha", 1f, 0f, 1f, 0f, 1f); //旋转 objectAnimator2 = ObjectAnimator.ofFloat(tvShow, "rotation", 0f, 360f, 0f); //缩放 objectAnimator3 = ObjectAnimator.ofFloat(tvShow, "scaleX", 2f, 4f, 1f, 0.5f, 1f); //移动 objectAnimator4 = ObjectAnimator.ofFloat(tvShow, "translationY", height / 8, -100, height / 2); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.main_btnAnimOne: { objectAnimator1.setDuration(3000l); objectAnimator1.start(); break; } case R.id.main_btnAnimTwo: { objectAnimator2.setDuration(3000l); objectAnimator2.start(); break; } case R.id.main_btnAnimThree: { objectAnimator3.setDuration(3000l); objectAnimator3.start(); break; } case R.id.main_btnAnimFour: { objectAnimator4.setDuration(3000l); objectAnimator4.start(); break; } default:break; } } }
另外,还有组合动画等,需要用到AnimatorSet类。