Android动画--属性动画Property Animation

简介

属性动画包含:
ObjectAnimator   动画的执行类
ValueAnimator    动画的执行类
AnimatorSet      用于控制一组动画的执行:线性,一起,每个动画的先后执行等。
AnimatorInflater 用户加载属性动画的xml文件

ObjectAnimator 单一属性动画

缩放X轴:ScaleX

ObjectAnimator().ofFloat(imageView,”ScaleY”,1.0f,0.0f).setDuration(3000).start();

缩放Y轴:ScaleY

ObjectAnimator().ofFloat(imageView,”ScaleX”,1.0f,0.0f).setDuration(3000).start();

旋转动画(X轴):rotationX

ObjectAnimator().ofFloat(imageView,”rotationX”,0.0f,360f).setDuration(3000).start();

旋转动画(Y轴):rotationY

ObjectAnimator().ofFloat(imageView,”rotationY”,0.0f,360f).setDuration(3000).start();

旋转动画(中心点):rotation

ObjectAnimator().ofFloat(imageView,”rotation”,0.0f,360f).setDuration(3000).start();

淡入淡出:alpha

ObjectAnimator().ofFloat(imageView,”alpha”,1.0f,0.0f).setDuration(3000).start();

位移动画(X轴):

ObjectAnimator().ofFloat(imageView,”translationX”,0.0f,100.0f).setDuration(3000);

位移动画(Y轴):

ObjectAnimator().ofFloat(imageView,”translationY”,0.0f,100.0f).setDuration(3000);

代码实现如下

                imageView.clearAnimation();
                ObjectAnimator objectAnimator=new ObjectAnimator().ofFloat(imageView,"translationX",0.0f,100.0f,0.0f,100.0f).setDuration(3000);
                objectAnimator.start();

在xml中实现

  • 首先需要在res文件夹下新建animator文件夹,在其中定义xml文件如下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000">
    <objectAnimator
        android:propertyName="scaleX"
        android:repeatCount="-1"
        android:valueFrom="0.0f"
        android:valueTo="1.0f"></objectAnimator>
</set>
  • 相应的代码中实现如下
                Animator animatorObjext = AnimatorInflater.loadAnimator(this, R.animator.objectanimator);
                animatorObjext.setTarget(imageView2);
                animatorObjext.start();

ValueAnimator

  • 代码实现如下
                imageView2.clearAnimation();
                imageView2.setImageResource(R.mipmap.ic_launcher);
                //这里的属性值可以根据需要设置多个
                ValueAnimator animator = ValueAnimator.ofFloat(1.0f, 0.0f, 1.0f, 0.0f, 1.0f);//设置属性值
                animator.setTarget(imageView2);//设置操作对象
                animator.setDuration(5000).start();//动画开始
                animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(ValueAnimator animation) {
                        imageView2.setScaleY((Float) animation.getAnimatedValue());//设置Y轴上的变化
                        imageView2.setScaleX((Float) animation.getAnimatedValue());//设置X轴上的变化
                    }
                });

PropertyValuesHolder 组合动画

  • 就是设置多个不同的动画,同时让他们加载就好了
  • 相应的代码实现
                imageView.clearAnimation();
                PropertyValuesHolder scaleX=PropertyValuesHolder.ofFloat("scaleX",1,0,1);
                PropertyValuesHolder scaleY=PropertyValuesHolder.ofFloat("scaleY",1,0,1);
                PropertyValuesHolder rotattion=PropertyValuesHolder.ofFloat("rotation",0,360);
                ObjectAnimator objectAnimator2=new ObjectAnimator().ofPropertyValuesHolder(imageView,scaleX,scaleY,rotattion).setDuration(3000);
                objectAnimator2.start();

AnimatorSet 组合动画(可以设置动画的顺序)

  • 相应的代码如下
                ObjectAnimator objectAnimator3=new ObjectAnimator().ofFloat(imageView,"translationX",0.0f,100.0f,0.0f,100.0f).setDuration(3000);
                ObjectAnimator objectAnimator4=new ObjectAnimator().ofFloat(imageView,"scaleX",1,0,1).setDuration(3000);
                ObjectAnimator objectAnimator5=new ObjectAnimator().ofFloat(imageView,"rotation",0,360).setDuration(3000);
                AnimatorSet animatorSet=new AnimatorSet();
                //设置动画同时执行
                animatorSet.playTogether(objectAnimator3,objectAnimator4);
                //设置动画的执行顺序
                animatorSet.play(objectAnimator5).after(objectAnimator3);
                animatorSet.start();

]

AnimatorInflater 加载属性动画的xml文件

  • xml还是在res文件夹下新建的animator文件夹下的xml文件
  • 相应的xml文件的定义如下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="together"
    android:duration="1000">
    <!-- ordering 指动画是一起播放还是一个接一个播放-->
    <objectAnimator
        android:propertyName="scaleX"
        android:valueFrom="0.0"
        android:valueTo="1.0"></objectAnimator>
    <objectAnimator
        android:propertyName="scaleY"
        android:valueFrom="0.0"
        android:valueTo="1.0"></objectAnimator>
</set>
  • 相应的逻辑代码如下
                imageView2.clearAnimation();
                imageView2.setImageResource(R.mipmap.ic_launcher);
                Animator animatorMy = AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.animatorinflater);
                animatorMy.setTarget(imageView2);
                animatorMy.start();

时间: 2024-10-10 06:45:11

Android动画--属性动画Property Animation的相关文章

android的属性动画

原文作者:Google 原文地址:https://developer.android.com/guide/topics/graphics/prop-animation.html 原文版权:Creative Commons 2.5 Attribution License 译文作者:Jianan - [email protected] 版本信息:本文基于2016-06-17版本翻译 译文版权:CC BY-NC-ND 4.0,允许复制转载,但必须保留译文作者署名及译文链接,不得演绎和用于商业用途 前言

Android之属性动画、值动画

Android属性动画 什么是Android属性动画 同类技术对比 补间动画Tween Animation 帧动画Frame Animation 属性动画Property Animation 属性动画组成部分相关类介绍 ObjectAnimator对象动画执行类 介绍 示例 ValueAnimator 值动画执行类 介绍 示例 PropertyValuesHolder 属性存储器 介绍 示例 Keyframe 关键帧 介绍 示例 AnimatorSet 执行集合类 介绍 示例 AnimatorU

css3动画属性(transitions:property duration timing transition-delay)

transitions:property duration timing-function; transitionst他有三个参数:1) property:属性设置,例如background,color等.2) duration:执行时间, 例如1s, 0.5s等.3) timing-function:动画种类, 例如linear 渐变 等.4) transition-delay:延迟时间. 例题(1): 1 p{ background:#000; 2 -webkit-transition:ba

android动画——属性动画(Property Animation)

视图动画请移步:http://blog.csdn.net/u013424496/article/details/51700077 相对与视图动画 ,属性动画(android3.0提出的) 使用条件: 完全弥补了View anim System的缺陷,你可以为一个对象的任何属性添加动画,(View或者非View),同时对象自己也会被修改. 并且当属性变化的时候,property Anim系统会自动的刷新屏幕. 属性动画系统在处理动画方面也更加强劲.更高级的,你可以指定动画的属性,比如颜色,位置,大

Android进阶——属性动画Property Animation详解(一)

引言 前一篇文章Android入门--补间动画和帧动画应用小结总结了补间动画和帧动画及一些相关类的应用,基本可以掌握简单的缩放.旋转.透明度变化.平移的动画效果,但是需要实现更复杂的动画效果时,比如说希望View的切换动画.Layout的切换动画.3D旋转动画等等,这些View Animation都无法做到.此时Property Animation应运而生,这篇主要总结下属性动画的相关知识点. 一.Property Animation属性动画概述 属性动画,在我最先接触到Android 1.5时

属性动画总结(Property Animation)

一.概述 属性动画可以作用在View的属性上,对属性进行修改,而且不要求对应的属性一定是有显示效果的. 二.属性动画的实现方式 1.基础的类Animator Animator是一个抽象类,是属性动画的基础类.不直接使用该类. 2.ObjectAnimator,继承自ValueAnimator 使用起来比较方便的是ObjectAnimator,可以使用ObjectAnimator直接指定需要修改的view,要修改的属性,值的变化范围. ObjectAnimator.ofFloat(view, "r

Android动画之三:Property Animation(上)

来完成这个Android动画系列,之前写了View Animation和Drawable Animation,接下来讲解三种动画中的最后一种,Property Animation,这也是Android动画中最强大的一部分,同时也是相对最复杂的一部分. Property Animation与Value Animation的区别 Property Animation翻译为属性动画,从Android3.0开始引入,相比与View Animation,官方更推荐开发者使用Property Animati

Android笔记(六十五) android中的动画——属性动画(propertyanimation)

补间动画只能定义起始和结束两个帧在“透明度”.“旋转”.“倾斜”.“位移”4个方面的变化,逐帧动画也只能是播放多个图片,无法满足我们日常复杂的动画需求,所以谷歌在3.0开始,推出了属性动画(property animation) 属性动画已经不再是针对View来设计的了,也不仅限定于只能实现移动.缩放.淡入淡出这几种动画操作,同时也不再是一种视觉上的动画效果了.它实际上是一种不断的对值进行操作的机制,并将值赋值到指定对象的指定属性上,可以是任意对象的任意属性. ValueAnimator Val

Android 用属性动画自定义view的渐变背景

自定义view渐变背景,同时监听手势自动生成小圆球. 宿主Activity如下: package com.edaixi.tempbak; import java.util.ArrayList; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ArgbE