美文网首页
动画之属性动画基础篇

动画之属性动画基础篇

作者: _Rice_ | 来源:发表于2018-09-19 15:30 被阅读0次

属性动画

属性动画,改变view或者object的属性实现动画,属性动画比补间动画更强大,不但可以实现旋转、平移等操作还可以自己定义动画效果,监听动画过程并作出相应动作。

属性动画的特性:
  • 在一定时间段内不断修改某个对象属性值的机制。
  • 支持对所有View能更新的属性的动画(需要属性的setXxx()和getXxx())。
  • 更改的是View实际的属性,所以不会影响其在动画执行后所在位置的正常使用。
属性动画的优点:
  • 优点:易定制,效果强
    Property Animation故名思议就是通过动画的方式改变对象的属性了,我们首先需要了解几个属性:

相关API

相关属性:

Duration动画的持续时间,默认300ms。

  • Time interpolation:时间差值,乍一看不知道是什么,但是我说LinearInterpolator、AccelerateDecelerateInterpolator,大家一定知道是干嘛的了,定义动画的变化率。
  • Repeat count and behavior:重复次数、以及重复模式;可以定义重复多少次;重复时从头开始,还是反向。
  • Animator sets: 动画集合,你可以定义一组动画,一起执行或者顺序执行。
  • Frame refresh delay:帧刷新延迟,对于你的动画,多久刷新一次帧;默认为10ms,但最终依赖系统的当前状态;基本不用管。
相关的类
  • ValueAnimator 整个属性动画最核心的
  • ObjectAnimator:继承ValueAnimator
  • AnimatorSet:用于控制一组动画的执行:线性,一起,每个动画的先后执行等。
  • AnimatorInflater:用户加载属性动画的xml文件
  • TypeEvaluator :类型估值,主要根据fraction计算新的属性值,用于设置动画操作属性的值。
  • TimeInterpolator:时间插值器,修改已执行时间占总时间的百分比,就是修改TypeEvaluator中的fraction参数值
  • AnimatorUpdateListener:监听整个动画过程。每播放一帧onAnimationUpdate()就会被调用一次
  • AnimatorListener:监听动画的开始、结束、取消以及重复播放

1、ValueAnimator

ValueAnimator内部使用一种时间循环机制来计算值与值直接的动画过渡。我们只需要将属性的取值范围、执行时长提供给ValueAnimator,那么就会自动帮我们计算属性值在各动画时段的取值,这些值会按照一定计算方式来实现过渡。除此之外它还负责管理播放次数、播放模式、动画监听。功能强大,自由度高,意味着开发人员需要做更多工作去实现动画需求

通常我们都是通过ofFloat、ofInt等静态工厂函数构建ValueAnimator,

    animator = ValueAnimator.ofFloat(0f, 100f);
                animator.setDuration(1000);
                //每次更新属性值时就会调用onAnimationUpdate函数,在这里可以获得新的属性值
                //十分灵活,只操作属性值,可以运用于任何对象之上
                animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(ValueAnimator animation) {
                        float animatedValue = (float) animation.getAnimatedValue();
                        mAnimationView.setTranslationX(animatedValue);
                        }
                    }
                });
    animator.start();

2、ObjectAnimator

valueAnimator只是对值进行一个平滑的动画过渡,而ObjectAnimator可以对目标对象的某个属性值进行修改,也就是说某个对象执行动画,同时不再需要实现它AnimatorUpdateListener,因为动画属性会自动更新,通过目标对象属性的setter函数更新属性值,如果没有setter函数,那么将会通过反射去更新。

示例
代码实现
animator = ObjectAnimator.ofFloat(mAnimationView,"translationX",0,200);
                animator.setDuration(1000);
                animator.start();
xml实现

放在res/animator目录下


Animator animator = AnimatorInflater.loadAnimator(context, R.animator.anim_file);
animator.setTarget(view);
animator.start();
备注:
  • translationX和translationY:这些属性控制View所在的位置,作为由其布局容器设置的左侧和顶部坐标的增量。
  • rotation,rotationX和rotationY:这些属性控制2D(rotation属性)中的旋转和围绕轴点的3D。
  • scaleX和scaleY:这些属性控制View围绕其轴心点的2D缩放。
  • pivotX和pivotY:这些属性控制枢轴点的位置,围绕该枢轴点进行旋转和缩放变换。默认情况下,轴心点位于对象的中心。
  • x和y:这些是简单的实用程序属性,用于描述View在其容器中的最终位置,作为左值和顶值以及translationX和translateY值的总和。
  • alpha:表示视图上的Alpha透明度。默认情况下,此值为1(不透明),值为0表示完全透明(不可见)。

AnimatorListener

实现类有AnimatorListenerAdapter

例子
        ObjectAnimator animator1 = ObjectAnimator.ofFloat(mAnimationView, "translationX", 100f);
                animator1.addListener(new Animator.AnimatorListener() {
                    @Override
                    public void onAnimationStart(Animator animation) {
                    }

                    @Override
                    public void onAnimationEnd(Animator animation) {
                    }

                    @Override
                    public void onAnimationCancel(Animator animation) {
                    }

                    @Override
                    public void onAnimationRepeat(Animator animation) {
                    }
                });
                animator1.setDuration(1000);
                animator1.start();

相关文章

  • iOS 核心动画~基础动画

    核心动画之基础动画(CABasicAnimation) 概述 基础动画主要用于完成对象指定动画属性两个Value之...

  • 动画之属性动画基础篇

    属性动画 属性动画,改变view或者object的属性实现动画,属性动画比补间动画更强大,不但可以实现旋转、平移等...

  • Android 基础动画之帧动画详解

    在上一篇 Android 基础动画之补间动画详解 主要介绍了补间动画的基本属性以及补间动画在Android起始设计...

  • 属性动画案例二(加载动画)

    继续属性动画,之前写过 属性动画案例一(基础动画与飘心动画) 简单了解了属性动画,这次来点炫酷的~加载动画,先看一...

  • 动画(二)

    这期动画是对基础动画的一个小结。动画的基本属性请看:iOS动画一 说到总结基础动画再总结下属性吧。想要的动画的动画...

  • 2-4.2 属性动画基础全纪录

    [TOC] 属性动画基础全记录 属性动画和View动画不同,它对作用对象进行了扩展,属性动画可以对任何对象做动画,...

  • CAAnimation常用属性一览表

    动画基础知识 动画的属性和解释 常用KeyPath总结 场景间过渡属性 转场动画

  • 动画合集之属性动画——基础

    本文的目标是:1、了解属性动画的基本概念,知道和一般动画Animation(帧动画和补间动画)的区别。2、掌握Va...

  • iOS 动画基础总结篇

    iOS 动画基础总结篇 iOS 动画基础总结篇

  • iOS动画(三):核心动画中缩放和旋转(Swift)

    参考:第五篇:CABasic Animation。iOS动画系列之五:基础动画之缩放篇&旋转篇 原理和上一篇是相同...

网友评论

      本文标题:动画之属性动画基础篇

      本文链接:https://www.haomeiwen.com/subject/ykxpnftx.html