Android开发之动画(属性动画)

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类。

猜你喜欢

转载自blog.csdn.net/lpCrazyBoy/article/details/81451198