Android动画-补间(Tween)动画

Android动画的两种方式,其中帧动画上篇文章已经讲了,这次主要讲解的就是补间动画,补间动画就是动画业务场景中常用的旋转,平移,缩放,和渐变效果,帧动画是通过轮播动画实现动画效果,补间动画通过在两个关键帧之间补充渐变的动画效果来实现的,相对而言补间动画的暂用的空间更小,补间动画有两种方式,一种是直接在代码中是实现,另外一种是在XML文件中定义,然后通过代码调用,如果以后有需要直接改xml文件就行不需要改代码。

布局文件

先来看下是实现的效果:

Layout中xml设置:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.googletween.MainActivity" >

    <LinearLayout
        android:id="@+id/line"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:onClick="alphaEvent"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="渐变"
            />

         <Button
            android:onClick="roateEvent"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="旋转"
            />

          <Button
            android:onClick="tranEvent"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="位移"
            />

           <Button
            android:onClick="scaleEvent"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="缩放"
            />

              <Button
            android:onClick="multiEvent"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"

            android:text="混合"
            />
    </LinearLayout>

    <ImageView
        android:id="@+id/image_change"
        android:layout_width="wrap_content"
        android:layout_below="@id/line"
		android:layout_height="wrap_content"
		android:layout_centerHorizontal="true"
		android:layout_centerVertical="true"
		android:src="@drawable/ic_launcher"
        />

</RelativeLayout>

 动画效果

渐变透明度,初始化构造函数的时候两个数字最小透明度和最大透明度:

 	AlphaAnimation alphaAnimation=new AlphaAnimation(0.1f, 1f);
    	//设置动画时间
    	alphaAnimation.setDuration(3000);
    	//重复次数
    	alphaAnimation.setRepeatCount(1);
    	alphaAnimation.setRepeatMode(Animation.REVERSE);
    	image.startAnimation(alphaAnimation);

 旋转效果,初始化的时候是旋转0度到360度:

RotateAnimation rotateAnimation=new RotateAnimation(0f, 360f);
		rotateAnimation.setDuration(2000);
		image.startAnimation(rotateAnimation);

  位移效果,第一个参数fromXDelta ,第二个参数toXDelta:分别是动画起始、结束时X坐标,第三个参数fromYDelta ,第四个参数toYDelta:分别是动画起始、结束时Y坐标:

	TranslateAnimation translateAnimation=new TranslateAnimation(0f, 100f, 0f, 100f);
    	translateAnimation.setDuration(2000);
    	image.startAnimation(translateAnimation);

  缩放效果

   	ScaleAnimation scaleAnimation=new ScaleAnimation(0.1f, 1f, 0.1f, 1f);
    	scaleAnimation.setDuration(2000);
    	image.startAnimation(scaleAnimation);

  缩放的同时移动(最后两种效果混合):

AnimationSet  animationSet=new AnimationSet(true);
    	TranslateAnimation translateAnimation=new TranslateAnimation(0f, 100f, 0f, 100f);
    	ScaleAnimation scaleAnimation=new ScaleAnimation(0.1f, 1f, 0.1f, 1f);

    	animationSet.addAnimation(translateAnimation);
    	animationSet.addAnimation(scaleAnimation);
    	animationSet.setDuration(2000);
    	image.startAnimation(animationSet);

 第二种是在xml文件中定义,将代码中的属性值在xml中设置即可:

渐变xml

<?xml version="1.0" encoding="utf-8"?>
<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="0.1"
    android:toAlpha="1.0"
    android:duration="2000"
    android:repeatCount="1"
    android:repeatMode="reverse">

</alpha>

  调用:

   	Animation alphaAnimation=AnimationUtils.loadAnimation(this, R.anim.alpha);
    	image.startAnimation(alphaAnimation);

旋转xml:

<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromDegrees="0"
    android:toDegrees="360">

</rotate>

  调用:

	Animation rotateAnimation=AnimationUtils.loadAnimation(this, R.anim.roate);
    	image.startAnimation(rotateAnimation);

  缩放xml:

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromXScale="0"
    android:toXScale="1"
    android:fromYScale="0"
    android:toYScale="1">

</scale>

  调用:

  	Animation scaleAnimation=AnimationUtils.loadAnimation(this, R.anim.scale);
    	image.startAnimation(scaleAnimation);

  位移xml:

<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
     android:duration="2000"
     android:fromXDelta="0"
     android:toXDelta="100"
     android:fromYDelta="0"
     android:toYDelta="100">

</translate>

  调用:

Animation translateAnimation=AnimationUtils.loadAnimation(this, R.anim.tran);
    	image.startAnimation(translateAnimation);

组合xml:

<?xml version="1.0" encoding="utf-8"?>
<set>

    <alpha
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="2000"
        android:fromAlpha="0.1"
        android:repeatCount="1"
        android:repeatMode="reverse"
        android:toAlpha="1.0" >
    </alpha>

    <rotate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="2000"
        android:fromDegrees="0"
        android:toDegrees="360" >
    </rotate>

    <scale
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="2000"
        android:fromXScale="0"
        android:fromYScale="0"
        android:toXScale="1"
        android:toYScale="1" >
    </scale>

    <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="2000"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="100"
        android:toYDelta="100" >
    </translate>

</set>

  调用:

Animation animationSet=AnimationUtils.loadAnimation(this, R.anim.set);
    	image.startAnimation(animationSet);
时间: 2024-10-15 01:41:42

Android动画-补间(Tween)动画的相关文章

DFTween: 一个最好的补间tween动画系统

与Daikon Forge协作,一个叫做 DFTween (Daikon Forge Tween) 的新补间系统. DFTween 是一个新的补间引擎在unity上.我们知道从一开始就必须是超级快,超级简单,和大多数的所有泛型周围的所有方式.补间的任何所需的属性是必须构成一个有趣的挑战,与一个独特的解决方案. 从ground 上,DFTween 旨在产生 GC 的减少为零,并有令人难以置信的轻运行时的足迹.它同时也是为了将难以置信的易于使用 - - 我们重利用流利的语法来配置补间属性 (没有 哈

Android 之 补间动画

补间动画的优点是可以节省空间.补间动画与逐帧动画在本质上是不同的,逐帧动画通过连续播放图片来模拟动画的效果,而补间动画则是通过在两个关键帧之间补充渐变的动画效果来实现的.目前Android应用框架支持的补间动画效果有以下5种.具体实现在android.view.animation类库中. (1)AlphaAnimation: 透明度(alpha)渐变效果,对应<alpha/>标签. (2)TranslateAnimation: 位移渐变,需要指定移动点的开始和结束坐标,对应<transl

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

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

Android笔记(六十四) android中的动画——补间动画(tweened animation)

补间动画就是只需要定义动画开始和结束的位置,动画中间的变化由系统去补齐. 补间动画由一下四种方式: 1.AplhaAnimation——透明度动画效果 2.ScaleAnimation ——缩放动画效果 3.TranslateAnimation——位移动画效果 4.RotateAnimation——旋转动画效果 1.AplhaAnimation AplhaAnimation的参数: fromAlpha:动画开始时的透明度,0.0表示完全透明 toAlpha:动画结束时的透明度,1.0表示完全不透

Android 动画 属性动画 视图动画 补间动画 帧动画 详解 使用

Android动画 Property Animation res/animator/filename.xml In Java: R.animator.filename In XML: @[package:]animator/filename Tween Animation res/anim/filename.xml In Java: R.anim.filename In XML: @[package:]anim/filename Frame Animation res/drawable/file

Android 动画系列之补间(Tween)动画详解

转载请标明出处: http://blog.csdn.net/Airsaid/article/details/51591239 本文出自:周游的博客 前言 开发环境 补间动画的属性 Animation的属性 Alpha属性 Rotate属性 Scale属性 Translate属性 AnimationSet属性 补间动画的使用 代码中使用补间动画 XML中定义补间动画资源AnimationDrawable 补间Tween动画与Interpolator 前言 上一篇博客中写了逐帧动画(Frame)的使

高速上手Unity中最好的补间动画插件DFTween

?? 出处:http://blog.csdn.net/u010019717 author:孙广东      时间:2015.3.17   23:00 DFTween 是一个在 Unity 游戏引擎中高速和easy使用的animation动画库. 它支持不论什么对象的tweening补间的属性, 并能够轻松地进行工作与您自己自己定义数据类型.API 非常简单可是功能非常强大,使其易于创建复杂的tweens补间和sequences序列.它已被优化从优秀性能.同一时候具有低内存和低CPU 要求. ·高

快速上手Unity中最好的补间动画插件DFTween

?? 出处:http://blog.csdn.net/u010019717 author:孙广东      时间:2015.3.17   23:00 DFTween 是一个在 Unity 游戏引擎中快速和容易使用的animation动画库.它支持任何对象的tweening补间的属性, 并可以轻松地进行工作与您自己自定义数据类型.API 很简单但是功能非常强大,使其易于创建复杂的tweens补间和sequences序列.它已被优化从优秀性能,同时具有低内存和低CPU 要求. ·快速 查阅在线演示,

Android开发之Tween(补间动画)完全解析(下)

欢迎转载,转载请注明出处:http://blog.csdn.net/dmk877/article/details/51980734 在上一篇文章中,我们详细讨论了Tween动画的xml的实现以及interpolator的使用,相信通过上篇文章大家对Tween动画的xml属性的配置会有一个详细的理解,当然这篇文章也是承接上篇文章,所以强烈建议先阅读上篇文章:Android开发之Tween(补间动画)完全解析(上),这篇文章将从代码的角度实现上篇文章的效果.如有疑问请留言,如有谬误欢迎批评指正. T