【Android-动画】属性动画基本介绍及使用方式

首先,我们要区别属性动画与补间动画的区别:

  • 属性动画:真正改变了控件的属性
  • 补间动画:视觉现象,没有改变都控件真正的值(如:当控件发送位置变化时,如果设置了点击事件,只有控件原位置的地方才有点击事件!)

属性动画重要的两个类:

  1. ValueAnimator
  2. ObjectAnimator.ofFloat()

————————————————————————————————
以一个textView为例来演示属性动画!

1、animate()方法的基本使用

animate()方法是view自带的,实现属性动画的方法,但是该方法只能 实现简单的动画效果

以textView为例,textView也是一个view,所以可以直接使用该方法!

        TextView tvTest=findViewById(R.id.tv_test);
        
        //translationYBy():沿Y轴移动多少距离,其他方法同理
        //setDuration():设置持续时间,单位是ms
        //start():启动动画
        tvTest.animate().translationYBy(500).setDuration(2000).start();

        //alpha():透明度变化
        tvTest.animate().alpha(0).setDuration(5000).start();

效果:
【Android-动画】属性动画基本介绍及使用方式_第1张图片

2、ValueAnimator

该类适用于监听值的变化,如从0->100发生的数值的变化可以用到该方法

       //设置valueAnimator的数值从0变为100
        ValueAnimator valueAnimator=ValueAnimator.ofFloat(0,100);
        //设置时间
        valueAnimator.setDuration(1000);
        //设置监听事件
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                //对值的变化进行监听(0-100[上述的值设的是0-100])
                Log.d(TAG,"  "+animation.getAnimatedValue());

                //返回当前动画分数,即在动画中使用的经过/内插分数
                //动画的最新帧更新(0-1)
               Toast.makeText(EasyDemoActivity.this,"   "+animation.getAnimatedFraction(),Toast.LENGTH_SHORT).show();
            }
        });
        //开始动画
        valueAnimator.start();

效果:
【Android-动画】属性动画基本介绍及使用方式_第2张图片

3、ObjectAnimator.ofFloat()

可以设置持续改变的动画

        TextView tvTest=findViewById(R.id.tv_test);
        //将textview作为参数穿进去
        //"translationY":表示动画要执行的类型
        //0,500,300:表示移动的过程,可多个值
        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(tvTest,"translationY",0,500,300);
        //设置动画事件
        objectAnimator.setDuration(3000);
        //开始动画
        objectAnimator.start();

效果:
【Android-动画】属性动画基本介绍及使用方式_第3张图片

你可能感兴趣的:(Android学习,#,activity,android)