Android Tween动画

View Animation, 即显示在view上的Tween Animation

Tween动画,本质上不改变View对象本身,只改变它的绘制方式

两种实现方式,一种在xml中定义,一种直接在代码里定义

xml定义方式:

位移动画translate

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXDelta="10"
    android:fromYDelta="0"
    android:toXDelta="50%"
    android:toYDelta="50%p"
    android:repeatCount="50"
    android:repeatMode="reverse"
    android:fillAfter="true">
<!-- 

repeatCount		动画再次重复的次数
repeatMode   	这一次反转上一次的效果
fillAfter		动画结束后,view停留在动画结束时的位置  view的实际位置并没有改变
50%p 相对于父布局
50%  相对于自身
 -->
</translate>

旋转动画rotate

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromDegrees="0"
    android:toDegrees="-90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="50"
    android:repeatMode="reverse"
    android:fillAfter="true">
<!--
fromDegrees="0" 	开始角度
toDegrees="-90"		结束角度
pivotX="50%"		中心点x
pivotY="50%"		中心点y
 -->
</rotate>

透明度渐变动画alpha

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="0"
    android:toAlpha="1"
    android:fillAfter="true"
    android:repeatCount="50"
    android:repeatMode="reverse" >
<!--
fromAlpha	开始的透明度  0完全透明
toAlpha		结束的透明度  1完全不透明
 -->
</alpha>

缩放动画scale

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXScale="0.5"
    android:fromYScale="1"
    android:toXScale="3"
    android:toYScale="2"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fillAfter="true"
    android:repeatCount="50"
    android:repeatMode="reverse"  >
<!--
	scale 缩放比率
 -->
</scale>

动画集

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fillAfter="true"
    android:repeatCount="50"
    android:repeatMode="reverse" >

    <scale
        android:fromXScale="0.5"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="50"
        android:repeatMode="reverse"
        android:toXScale="3"
        android:toYScale="2" />

    <alpha
        android:fromAlpha="0"
        android:repeatCount="50"
        android:repeatMode="reverse"
        android:toAlpha="1" />

    <translate
        android:fromXDelta="10"
        android:fromYDelta="0"
        android:repeatCount="50"
        android:repeatMode="reverse"
        android:toXDelta="50%"
        android:toYDelta="50%p" />

    <rotate
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="50"
        android:repeatMode="reverse"
        android:toDegrees="-100" />

</set>

代码加载这些xml定义的动画

	Animation translate = AnimationUtils.loadAnimation(this, R.anim.translate);
			imageview_translate.setBackground(getResources().getDrawable(R.drawable.a11));
			imageview_translate.startAnimation(translate);

			Animation rotate = AnimationUtils.loadAnimation(this, R.anim.rotate);
			imageview_rotate.setBackground(getResources().getDrawable(R.drawable.a11));
			imageview_rotate.startAnimation(rotate);

			Animation alpha = AnimationUtils.loadAnimation(this, R.anim.alpha);
			imageview_alpha.setBackground(getResources().getDrawable(R.drawable.a11));
			imageview_alpha.startAnimation(alpha);

			Animation scale = AnimationUtils.loadAnimation(this, R.anim.scale);
			imageview_scale.setBackground(getResources().getDrawable(R.drawable.a11));
			imageview_scale.startAnimation(scale);

			Animation set = AnimationUtils.loadAnimation(this, R.anim.set);
			imageview_set.setBackground(getResources().getDrawable(R.drawable.a11));
			imageview_set.startAnimation(set);

纯代码创建Tween Animation

AnimationSet animationSet = new AnimationSet(true);
			animationSet.addAnimation(scale);
			animationSet.addAnimation(translate);
			animationSet.addAnimation(alpha);
			animationSet.addAnimation(rotate);
			animationSet.setDuration(2000);
			animationSet.setRepeatCount(50);
			animationSet.setRepeatMode(Animation.RESTART);
//			animationSet.setRepeatMode(Animation.REVERSE);
			imageview_set.setBackground(getResources().getDrawable(R.drawable.a11));
			imageview_set.startAnimation(animationSet);

			TranslateAnimation translateAnimation;
			RotateAnimation rotateAnimation;
			AlphaAnimation alphaAnimation;
			ScaleAnimation scaleAnimation;
//			Animation.RELATIVE_TO_SELF	相对于自身
//			Animation.RELATIVE_TO_PARENT 相对于父View

设置动画监听器

	scale.setAnimationListener(new AnimationListener() {

				@Override //动画开始
				public void onAnimationStart(Animation animation) {

				}

				@Override //动画重复
				public void onAnimationRepeat(Animation animation) {

				}

				@Override //动画结束
				public void onAnimationEnd(Animation animation) {

				}
			});

动画插入器Interpolator

在animation的xml和代码中 可以设置动画的插入器,它用来指示动画在持续时间内的动作的速率变化

android:interpolator="@android:anim/overshoot_interpolator"OvershootInterpolator

 <!--
 默认情况下:动画随着时间的推移 均匀的被应用,要改变这种效果可以使用插入器
 interpolator 设置插入器
 	accelerate_interpolator  				类似加速度先小后大, 开始慢 后渐快  变速运动
 	accelerate_decelerate_interpolator		类似加速度先大后小, 先加速 后减速	 变速运动

 	anticipate_interpolator					the change starts backward then flings forward 先减(减到比开始值还小一点),后加(加到结束值)
 	anticipate_overshoot_interpolator		先减(减到比开始值还小一点),后加(加到比结束值还大一点,再回退到结束值)
 	overshoot_interpolator					直接加速到结束值,并比结束值还大一点,再回退到结束值

 	bounce_interpolator						反弹结束时的变化 到达结束值时一会小一会大 来回两次
 	cycle_interpolator						先快速从开始到结束值,再遵循正弦模式继续运动 (左右对切,上下对切)
 	linear_interpolator						类似加速度为0,速率不变, 匀速运动 	不定义插入器时使用的默认值

  -->

Android Tween动画,布布扣,bubuko.com

时间: 2024-10-10 21:06:59

Android Tween动画的相关文章

android tween动画和Frame动画总结

tween  动画有四种 //透明度动画 AlphaAnimation aa = (AlphaAnimation) AnimationUtils.loadAnimation(MainActivity.this,R.anim.myalpha); //位移动画 TranslateAnimation ta = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1f, Animati

Android tween 动画 XML 梳理

前言: Tween动画是展现出旋转.渐变.移动.缩放的这么一种转换过程,即补间动画.Tween动画有两种定义方式:XML形式,编码形式.这次主要来梳理XML的方式配置动画 (1)XML定义动画,按照动画定义语法完成XML,置于/res/anim目录下,文件名作为资源ID引用 (2)XML文件中必须有一个根元素,可以是<alpha>.<scale>.<translate>.<rotate>中的任意一个,也可以是<set>来管理一个由前面几个元素组成

【Android动画】之Tween动画 (渐变、缩放、位移、旋转)

Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似. 下面就讲一下Tweene Animations. 主要类: Animation  动画 AlphaAnimation 渐变透明度 RotateAnimation 画面旋转 ScaleAnimation 渐变尺寸缩放 TranslateAnimation 位置移动 Animatio

【转】android动画之Tween动画 (渐变、缩放、位移、旋转)

原文:http://blog.csdn.net/feng88724/article/details/6318430 Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似. 下面就讲一下Tweene Animations. 主要类: Animation   动画 AlphaAnimation 渐变透明度 RotateAnimation

Android学习笔记-tween动画

Android动画分为Tween动画和Frame动画,近期学习了,体tween动画,现在讲学习的心得以及相关知识介绍如下. Tween又称为补间动画,可以把对象进行缩小.放大.旋转和渐变等操作.    第一: Tween动画四个主要实现类: 1.AlphaAnimation:渐变(颜色)动画,主要控制透明度变化动画类,常使用AlphaAnimation(float fromAlpha, float toAlpha)来构造: fromAlpha:动画开始时的透明度(取值范围为0.0到1.0): t

android动画之:补间动画(Tween动画)

android中Tween动画实现原理:通过对View的内容进行图形变换 (平移.缩放.旋转.透明度)的改变来实现动画效果.动画效果的定义可用XML来做也可以采用编码来做,今天简单讲下用代码来实现Tween动画中的四种动画方式.四种动画分别对就四个动画类: 渐变透明度动画效果 AlphaAnimation 渐变尺寸缩放动画效果 ScaleAnimation 画面位置移动动画效果 TranslateAnimation 画面旋转动画效果 RotateAnimation 1:平移操作 /**Trans

Android学习笔记-tween动画之xml实现

继上篇tween动画的java实现:http://www.cnblogs.com/fengtengfei/p/3957800.html, 这里我接着介绍一下tween动画的xml实现的方法,   首先我们需要在res文件夹在建立anim文件夹,再在anim文件夹里建相关动画的xml,并设置属相即可. 然后再activity中我们通过AnimationUtils.loadAnimation,来加载xml文件. Animation animation = AnimationUtils.loadAni

android动画-tween动画实现原理

现有的 Android 动画框架是建立在 View 的级别上的,在 View 类中有一个接口 startAnimation 来使动画开始,startAnimation 函数会将一个 Animation 类别的参数传给 View,这个 Animation 是用来指定我们使用的是哪种动画,现有的动画有平移,缩放,旋转以及 alpha 变换等.如果需要更复杂的效果,我们还可以将这些动画组合起来,这些在下面会讨论到. 要了解 Android 动画是如何画出来的,我们首先要了解 Android 的 Vie

Android的Tween动画的实现框架

在写程序的时候遇到了Tween动画几个问题: 1,  执行动画的时候点击事件仍然在动画开始的位置? 2,  XXXAnimation的构造参数里面的值具体是什么意思? 3,  平移动画中fromXValue和toXValue旋转动画中fromDegrees和toDegrees取负值有什么不同??(相信很多人也有疑惑) 4,  RotateAnimation的int pivotXType, float pivotXValue, int pivotYType, float pivotYValue四个