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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值