天天看点

Android动画开发——Animation动画效果

本文转自:http://www.htcplayer.com/thread-2852-1-1.html

动画类型

android的animation由四种类型组成

xml中

alpha

渐变透明度动画效果

scale

渐变尺寸伸缩动画效果

translate

画面转换位置移动动画效果

rotate

画面转移旋转动画效果

javacode中

alphaanimation

scaleanimation

translateanimation

rotateanimation

android动画模式

animation主要有两种动画模式:

一种是tweened animation(渐变动画)

javacode

一种是frame by frame(画面转换动画)

如何在xml文件中定义动画

① 打开eclipse,新建android工程

② 在res目录中新建anim文件夹

③ 在anim目录中新建一个myanim.xml(注意文件名小写)

④ 加入xml的动画代码

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

<set xmlns:android="http://schemas.android.com/apk/res/android">

  <alpha/>

  <scale/>

  <translate/>

  <rotate/>

</set>

复制代码

android动画解析--xml

<alpha>

<set xmlns:android="http://schemas.android.com/apk/res/android" >

<alpha

android:fromalpha="0.1"

android:toalpha="1.0"

android:duration="3000"

/>

<!-- 透明度控制动画效果 alpha

        浮点型值:

            fromalpha 属性为动画起始时透明度

            toalpha   属性为动画结束时透明度

            说明:

                0.0表示完全透明

                1.0表示完全不透明

            以上值取0.0-1.0之间的float数据类型的数字

        长整型值:

            duration  属性为动画持续时间

            说明:     

                时间以毫秒为单位

-->

<scale>

   <scale  

          android:interpolator=

                     "@android:anim/accelerate_decelerate_interpolator"

          android:fromxscale="0.0"

          android:toxscale="1.4"

          android:fromyscale="0.0"

          android:toyscale="1.4"

          android:pivotx="50%"

          android:pivoty="50%"

          android:fillafter="false"

          android:duration="700" />

<!-- 尺寸伸缩动画效果 scale

       属性:interpolator 指定一个动画的插入器

        在我试验过程中,使用android.res.anim中的资源时候发现

        有三种动画插入器:

            accelerate_decelerate_interpolator  加速-减速 动画插入器

            accelerate_interpolator        加速-动画插入器

            decelerate_interpolator        减速- 动画插入器

        其他的属于特定的动画效果

      浮点型值:

            fromxscale 属性为动画起始时 x坐标上的伸缩尺寸   

            toxscale   属性为动画结束时 x坐标上的伸缩尺寸     

            fromyscale 属性为动画起始时y坐标上的伸缩尺寸   

            toyscale   属性为动画结束时y坐标上的伸缩尺寸   

                 以上四种属性值   

                    0.0表示收缩到没有

                    1.0表示正常无伸缩     

                    值小于1.0表示收缩  

                    值大于1.0表示放大

            pivotx     属性为动画相对于物件的x坐标的开始位置

            pivoty     属性为动画相对于物件的y坐标的开始位置

                    以上两个属性值 从0%-100%中取值

                    50%为物件的x或y方向坐标上的中点位置

            说明:   时间以毫秒为单位

        布尔型值:

            fillafter 属性 当设置为true ,该动画转化在动画结束后被应用

<translate>

<translate

android:fromxdelta="30"

android:toxdelta="-80"

android:fromydelta="30"

android:toydelta="300"

android:duration="2000"

<!-- translate 位置转移动画效果

        整型值:

            fromxdelta 属性为动画起始时 x坐标上的位置   

            toxdelta   属性为动画结束时 x坐标上的位置

            fromydelta 属性为动画起始时 y坐标上的位置

            toydelta   属性为动画结束时 y坐标上的位置

            注意:

                     没有指定fromxtype toxtype fromytype toytype 时候,

                     默认是以自己为相对参照物            

<rotate>

<rotate

        android:interpolator="@android:anim/accelerate_decelerate_interpolator"

        android:fromdegrees="0"

        android:todegrees="+350"         

        android:pivotx="50%"

        android:pivoty="50%"     

        android:duration="3000" />  

<!-- rotate 旋转动画效果

             在我试验过程中,使用android.res.anim中的资源时候发现

             有三种动画插入器:

                accelerate_decelerate_interpolator   加速-减速 动画插入器

                accelerate_interpolator               加速-动画插入器

                decelerate_interpolator               减速- 动画插入器

             其他的属于特定的动画效果

       浮点数型值:

            fromdegrees 属性为动画起始时物件的角度   

            todegrees   属性为动画结束时物件旋转的角度 可以大于360度   

                     当角度为负数——表示逆时针旋转

                     当角度为正数——表示顺时针旋转              

                     (负数from——to正数:顺时针旋转)   

                     (负数from——to负数:逆时针旋转)

                     (正数from——to正数:顺时针旋转)

                     (正数from——to负数:逆时针旋转)      

            说明:        以上两个属性值 从0%-100%中取值

                         50%为物件的x或y方向坐标上的中点位置

            说明:       时间以毫秒为单位

如何使用xml中的动画效果

public static animation loadanimation (context context, int id)

//第一个参数context为程序的上下文   

//第二个参数id为动画xml文件的引用

//例子:

myanimation= animationutils.loadanimation(this,r.anim.my_action);

//使用animationutils类的静态方法loadanimation()来加载xml中的动画xml文件

如何在java代码中定义动画

//在代码中定义 动画实例对象

private animation myanimation_alpha;

private animation myanimation_scale;

private animation myanimation_translate;

private animation myanimation_rotate;

    //根据各自的构造方法来初始化一个实例对象

myanimation_alpha=new alphaanimation(0.1f, 1.0f);

myanimation_scale =new scaleanimation(0.0f, 1.4f, 0.0f, 1.4f,

             animation.relative_to_self, 0.5f, animation.relative_to_self, 0.5f);

myanimation_translate=new translateanimation(30.0f, -80.0f, 30.0f, 300.0f);

myanimation_rotate=new rotateanimation(0.0f, +350.0f,

               animation.relative_to_self,0.5f,animation.relative_to_self, 0.5f);

android动画解析--javacode

① alphaanimation类对象定义

   1. private alphaanimation myanimation_alpha;

② alphaanimation类对象构造

alphaanimation(float fromalpha, float toalpha)

//第一个参数fromalpha为 动画开始时候透明度

//第二个参数toalpha为 动画结束时候透明度

//说明:

//                0.0表示完全透明

//                1.0表示完全不透明

③ 设置动画持续时间

myanimation_alpha.setduration(5000);

//设置时间持续时间为 5000毫秒

① scaleanimation类对象定义

private alphaanimation myanimation_alpha;

② scaleanimation类对象构造

scaleanimation(float fromx, float tox, float fromy, float toy,

           int pivotxtype, float pivotxvalue, int pivotytype, float pivotyvalue)

//第一个参数fromx为动画起始时 x坐标上的伸缩尺寸   

//第二个参数tox为动画结束时 x坐标上的伸缩尺寸     

//第三个参数fromy为动画起始时y坐标上的伸缩尺寸   

//第四个参数toy为动画结束时y坐标上的伸缩尺寸  

/*说明:

                    以上四种属性值   

*/

//第五个参数pivotxtype为动画在x轴相对于物件位置类型  

//第六个参数pivotxvalue为动画相对于物件的x坐标的开始位置

//第七个参数pivotxtype为动画在y轴相对于物件位置类型   

//第八个参数pivotyvalue为动画相对于物件的y坐标的开始位置

myanimation_scale.setduration(700);

//设置时间持续时间为 700毫秒

① translateanimation类对象定义

② translateanimation类对象构造

translateanimation(float fromxdelta, float toxdelta,

                       float fromydelta, float toydelta)

//第一个参数fromxdelta为动画起始时 x坐标上的移动位置   

//第二个参数toxdelta为动画结束时 x坐标上的移动位置      

//第三个参数fromydelta为动画起始时y坐标上的移动位置     

//第四个参数toydelta为动画结束时y坐标上的移动位置

myanimation_translate.setduration(2000);

//设置时间持续时间为 2000毫秒

① rotateanimation类对象定义

② rotateanimation类对象构造

rotateanimation(float fromdegrees, float todegrees,

            int pivotxtype, float pivotxvalue, int pivotytype, float pivotyvalue)

//第一个参数fromdegrees为动画起始时的旋转角度   

//第二个参数todegrees为动画旋转到的角度   

//第三个参数pivotxtype为动画在x轴相对于物件位置类型  

//第四个参数pivotxvalue为动画相对于物件的x坐标的开始位置

//第五个参数pivotxtype为动画在y轴相对于物件位置类型   

//第六个参数pivotyvalue为动画相对于物件的y坐标的开始位置

myanimation_rotate.setduration(3000);

//设置时间持续时间为 3000毫秒

如何使用java代码中的动画效果

使用从view父类继承过来的方法startanimation()来为view或是子类view等等添加一个动画效果

public void startanimation (animation animation)