Android 一般动画animation和属性动画animator


package com.example.animation;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

	}

	public void click(View view){
		Toast.makeText(this, "click", Toast.LENGTH_SHORT).show();
	} 

	public void move(View view ){
		float fromXDelta=0;
		float toXDelta=0;
		float fromYDelta=0;
		float toYDelta=200;
		TranslateAnimation animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta);
		/**
		 * time
		 */
		animation.setDuration(1000);
		animation.setFillAfter(true);
		ImageView imageView=(ImageView)findViewById(R.id.imageView);
		imageView.startAnimation(animation);
	}

}

这是一般动画,再看属性动画

区别:一般动画变换后只是图片移动了,view的位置不变,然而属性动画view随着图片移动。

	public void move(View view ){

		ImageView imageView=(ImageView)findViewById(R.id.imageView);
		ObjectAnimator.ofFloat(imageView, "translationY", 0f,200f).setDuration(1000).start();
	}

多种动画同时进行

	public void move(View view ){

		ImageView imageView=(ImageView)findViewById(R.id.imageView);
		ObjectAnimator.ofFloat(imageView, "translationY", 0f,200f).setDuration(1000).start();
		ObjectAnimator.ofFloat(imageView, "translationX", 0f,200f).setDuration(1000).start();
		ObjectAnimator.ofFloat(imageView, "rotation", 0,360f).setDuration(1000).start();
	}

Google提供了一种更节省系统资源的多种动画同时播放

	public void move(View view ){

		ImageView imageView=(ImageView)findViewById(R.id.imageView);

		PropertyValuesHolder p1=PropertyValuesHolder.ofFloat("rotation", 0,360f);
		PropertyValuesHolder p2=PropertyValuesHolder.ofFloat("translationX", 0f,200f);
		PropertyValuesHolder p3=PropertyValuesHolder.ofFloat("translationY", 0f,200f);
		ObjectAnimator.ofPropertyValuesHolder(imageView, p1,p2,p3).setDuration(1000).start();
	}

同时Google提供了animatorset,允许多种不同动画按照用户要求播放,如使用set.palyTpgether()   set.playSequentially()

	public void move(View view ){

		ImageView imageView=(ImageView)findViewById(R.id.imageView);

		ObjectAnimator animator1=ObjectAnimator.ofFloat(imageView, "rotation", 0,360f);
		ObjectAnimator animator2=ObjectAnimator.ofFloat(imageView, "translationX", 0,200f);
		ObjectAnimator animator3=ObjectAnimator.ofFloat(imageView, "translationY", 0,200f);

		AnimatorSet set=new AnimatorSet();
		//set.playTogether(animator1,animator2,animator3);
		set.playSequentially(animator1,animator2,animator3);
		set.setDuration(1000);
		set.start();
	}
时间: 2024-12-14 15:36:26

Android 一般动画animation和属性动画animator的相关文章

Android动画效果之初识Property Animation(属性动画)(三)

前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Android动画效果之Frame Animation(逐帧动画)(二),其实总结前两个的根本目的就是为了学习今天的主角Property Animation(属性动画).其实在Android最早期只提供了前两种动画方式,在Android 3.0才引入了属性动画,谷歌为何要引入属性动画呢?今天我们来总结学习一

Android自定义view教程03---Android 属性动画 详解

1 package com.example.donghuatest; 2 3 import android.animation.ObjectAnimator; 4 import android.animation.PropertyValuesHolder; 5 import android.animation.ValueAnimator; 6 import android.animation.ValueAnimator.AnimatorUpdateListener; 7 import andro

Android动画完全解析--属性动画

一.概述 上篇博客介绍了View动画的简单使用和基本工作原理原理,这篇来学习下属性动画.和View动画不同的是,属性动画不再简单的使用平移.旋转.缩放.透明度这4种变换,代替它们的是ValueAnimator.ObjectAnimator等概念. 二.运行截图 三.TimeInterpolator和TypeEvaluator 在真正学习属性动画之前,我们需要理解TimeInterpolator和TypeEvaluator这两个概念. 1.TimeInterpolator 中文翻译为时间插值器.它

css动画-animation各个属性详解(转)

CSS3的animation很容易就能实现各种酷炫的动画,虽然看到别人的成果图会觉得很难,但是如果掌握好各种动画属性,做好酷炫吊炸天的动画都不在话下,好,切入正题. 一.动画属性: 动画属性包括:①animation-name,②animation-duration,③animation-timing-function, 以下是各属性详解: 1.animation-name:指定要绑定到选择器的关键帧的名称. 2.animation-duration:定义动画完成一个周期需要多少秒或毫秒 3.a

动画(Animation) 、 高级动画(Core Animation)

1 演示UIImage制作的动画 1.1 问题 UIImage动画是IOS提供的最基本的动画,通常用于制作一些小型的动画,本案例使用UIImage制作一个小狗跑动的动画,如图-1所示: 图-1 1.2 方案 首先在创建好的Xcode项目的Storyboard中拖放一个ImageView控件,并关联成TRViewController的属性imageView. 然后在viewDidLoad方法中使用工厂方法animatedImageNamed:创建UIImage对象image. 最后将imageVi

(三十九)android动画 Animation四大属性 详解(转载:http://www.android100.org/html/201304/25/2295.html)

一.Animation主要有四大属性,分别是淡入淡出,绕轴旋转,变化大小,位移变化 二.四大属性的共同的方法 1.setDuration(long durationMills):设置动画持续的时间(单位:毫秒) 2.setFillAfter(boolean fillAfter):如果fillAfter的值为true,则动画执行后看,控件将停留在执行结束的状态 3.setFillBefore(boolean fillBefore):如果fillBefore的值为true,则动画执行后看,控件将停留

Android笔记(六十六) android中的动画——XML文件定义属性动画

除了直接在java代码中定义动画之外,还可以使用xml文件定义动画,以便重用. 如果想要使用XML来编写动画,首先要在res目录下面新建一个animator文件夹,所有属性动画的XML文件都应该存放在这个文件夹当中.然后在XML文件中我们一共可以使用如下三种标签: <animator>  对应代码中的ValueAnimator <objectAnimator>  对应代码中的ObjectAnimator <set>  对应代码中的AnimatorSet 使用XML设置动

绘图篇——android属性动画

本文讲介绍android在3.0之后推出的一种新的动画机制,属性动画,对动画不了解的同学,可以先去看看绘图篇--android动画基础这篇文章.好了,现在我们进入正题. 基本概念 android传统动画Animation与属性动画Animator的工作原理 Animator出现的原因 Animation的局限性 属性动画ObjectAnimator translationX translationY X和Y rotation 组合动画 动画事件监听 小栗子 基本概念 [android传统动画An

Android(java)学习笔记263:Android下的属性动画(Property Animation)

1. 属性动画(Property Animation)引入: 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation). 逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理. 补间动画则是可以对View进行一系列的动画操作,包括淡入淡出.缩放.平移.