android 动画(1) 补间动画

android动画:

3.0以前,android支持两种动画模式,tween animation,frame animation,

3.0中又引入了一个新的动画系统:property animation,

这三种动画模式在SDK中被称为

property animation,        属性动画:

view animation,       补间动画:  给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。

            (Tween animation)

drawable animation。  帧动画:   就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果(Frame animation)

一、View Animation 补间动画 

1.创建布局文件---》res--》anim--->设置效果
2.在代码中:
  1)初始化Animation对象 通过AnimationUtils.loadAnimation(上下文,布局文件);
  2)给控件设置动画的效果: view.startAnimation();

      用XML定义的动画放在/res/anim/文件夹内,

     XML文件的根元素可以为(淡入淡出, 缩放, 平移, 旋转,xx, 集合 )

     <alpha>,<scale>,<translate>,<rotate>,interpolator元素或<set>(表示以上几个动画的集合,set可以嵌套)。

     默认情况下,所有动画是同时进行的,可以通过startOffset属性设置各个动画的开始偏移(开始时间)来达到动画顺序播放的效果。

   可以通过设置interpolator属性改变动画渐变的方式,如AccelerateInterpolator,

   开始时慢,然后逐渐加快。默认为AccelerateDecelerateInterpolator。

定义好动画的XML文件后,可以通过类似下面的代码对指定View应用动画。

public class MainActivity extends Activity {
    private Animation animation;
    private ImageView iv;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv = (ImageView) findViewById(R.id.imageView1);
        //初始化Animation对象
        animation = AnimationUtils.loadAnimation(this, R.anim.rotate);
        //设置动画效果
        iv.startAnimation(animation);

    }}

alpha.xml, 淡入淡出 <alpha /> 设置属性

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"      //动画的执行时间
    android:fromAlpha="0"       //开始的透明度
    android:repeatCount="5"     //重复的次数
    android:toAlpha="2" >      //结束的透明度
</alpha>

rotate.xml   旋转

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

缩放  scale.xml

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

平移 traslate.xml

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

集合:set.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <alpha
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="3000"
        android:fromAlpha="0"
        android:repeatCount="5"
        android:toAlpha="2" />

    <rotate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="1000"
        android:fromDegrees="0"
        android:pivotX="50"
        android:pivotY="50"
        android:repeatCount="-1"
        android:toDegrees="360" >
    </rotate>

    <scale
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="4000"
        android:fromXScale="0"
        android:fromYScale="0"
        android:repeatCount="5"
        android:toXScale="2"
        android:toYScale="2" >
    </scale>

    <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="3000"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:repeatCount="3"
        android:toXDelta="200"
        android:toYDelta="200" >
    </translate>

</set>

另外可以不使用xml文件,直接设置属性

Animations extends Object implements Cloneable

使用TweenedAnimations的步骤:

1.创建一个AnimationSet对象(Animation子类);

2.增加需要创建相应的Animation对象;

3.更加项目的需求,为Animation对象设置相应的数据;

4.将Animatin对象添加到AnimationSet对象当中;

5.使用控件对象开始执行AnimationSet。

Tween Animations的通用方法

    1、setDuration(long durationMills)  设置动画持续时间(单位:毫秒)  

     2、setFillAfter(Boolean fillAfter)  如果fillAfter的值为true,则动画执行后,控件将停留在执行结束的状态  

    3、setFillBefore(Boolean fillBefore)  如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态  

    4、setStartOffSet(long startOffSet)  设置动画执行之前的等待时间  

5、setRepeatCount(int repeatCount)  重复的次数

Animation的四个子类:

    AlphaAnimation、TranslateAnimation、ScaleAnimation、RotateAnimation

四、具体实现

AlphaAnimation:

     //1.创建一个AnimationSet对象(Animation子类);
        AnimationSet aset = new AnimationSet(true);
        //2.增加需要创建相应的Animation对象;1表示完全不透明,0表示完全透明
        AlphaAnimation alphaAnimation = new AlphaAnimation(1,  0);
        //3.更加项目的需求,为Animation对象设置相应的数据;
        alphaAnimation.setDuration(3000);//设置动画的执行时间
        alphaAnimation.setRepeatCount(1);
        //4.将Animatin对象添加到AnimationSet对象当中;
        aset.addAnimation(alphaAnimation);
        //5.使用控件对象开始执行AnimationSet
        iv.startAnimation(aset);//注意执行的是AnimationSet(Animation子类)

RotateAnimation

        //1.创建一个AnimationSet对象(Animation子类);
        AnimationSet aset = new AnimationSet(true);

        //2.增加需要创建相应的Animation对象;
        RotateAnimation  animaiton = new RotateAnimation(
                0,                                 //旋转开始角度
                360,                              //结束角度
                //确定x轴坐标的类型:有ABSOLUT绝对坐标、RELATIVE_TO_SELF相对于自身坐标、RELATIVE_TO_PARENT相对于父控件的坐标
                Animation.RELATIVE_TO_SELF,
                0.5f,
                Animation.RELATIVE_TO_SELF,
                0.5f);
        //3.更加项目的需求,为Animation对象设置相应的数据;
        animaiton.setDuration(3000);//设置动画的执行时间
        animaiton.setRepeatCount(1);
        //4.将Animatin对象添加到AnimationSet对象当中;
        aset.addAnimation(animaiton);
        //5.使用控件对象开始执行AnimationSet
        iv.startAnimation(aset); 

ScaleAnimation

        //1.创建一个AnimationSet对象(Animation子类);
        AnimationSet aset = new AnimationSet(true);

        //2.增加需要创建相应的Animation对象;
        //参数1:x轴的初始值           
        //参数2:x轴收缩后的值           
        //参数3:y轴的初始值           
        //参数4:y轴收缩后的值           
        //参数5:确定x轴坐标的类型           
        //参数6:x轴的值,0.5f表明是以自身这个控件的一半长度为x轴           
        //参数7:确定y轴坐标的类型           
        //参数8:y轴的值,0.5f表明是以自身这个控件的一半长度为x轴      
        ScaleAnimation animaiton = new ScaleAnimation(
                0, 0.1f, 0, 0.1f,
                Animation.RELATIVE_TO_SELF,
                0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

        //3.更加项目的需求,为Animation对象设置相应的数据;
        animaiton.setDuration(3000);//设置动画的执行时间
        animaiton.setRepeatCount(1);
        //4.将Animatin对象添加到AnimationSet对象当中;
        aset.addAnimation(animaiton);
        //5.使用控件对象开始执行AnimationSet
        iv.startAnimation(aset); 
TranslateAnimation 
        //1.创建一个AnimationSet对象(Animation子类);
        AnimationSet aset = new AnimationSet(true);
        //2.增加需要创建相应的Animation对象;
        //参数1~2:x轴的开始位置           
        //参数3~4:y轴的开始位置           
        //参数5~6:x轴的结束位置           
        //参数7~8:x轴的结束位置
        TranslateAnimation animaiton = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF,0f,
                Animation.RELATIVE_TO_SELF,0.5f,
                Animation.RELATIVE_TO_SELF,0f,
                Animation.RELATIVE_TO_SELF,0.5f);
        //3.更加项目的需求,为Animation对象设置相应的数据;
        animaiton.setDuration(3000);//设置动画的执行时间
        animaiton.setRepeatCount(1);
        animaiton.setFillAfter(true);
        //4.将Animatin对象添加到AnimationSet对象当中;
        aset.addAnimation(animaiton);
        //5.使用控件对象开始执行AnimationSet
        iv.startAnimation(aset); 
时间: 2024-12-14 18:10:43

android 动画(1) 补间动画的相关文章

Android动画--帧动画和补间动画

帧动画 首先我们定义在drawable文件夹下定义一个xml文件 里面包含我们要播放的动画的图片,以及每一帧动画的播放的时长 <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@mi

Android中的补间动画(tween)的简单使用

相对帧动画,补间动画(tween)可以这么理解:我们不必像帧动画一样指定动画的每一帧,只需定义一个动画的开始和结束关键帧,而中间变化的帧由系统帮我们计算. tween动画可以分为下面几种: AlphaAnimation(透明渐变动画): 示例:res/anim/alpha.xml <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.andr

Android动画效果——1.帧动画2.补间动画3.跳转画面(三)

Android--动画效果1.帧动画2.补间动画3.跳转画面 插值器类 xml属性值 说明 LinearInterpolator @android:anim/linear_interpolatorr 动画以均匀的速度改变. AccelerateInterpolator @android:anim/accelerate_interpolator 在动画开始时改变速度较慢,然后开始加速. AccelerateDecelerateInterpolator @android:anim/accelerat

TimePicker控件、帧动画、补间动画

1.TimePicker控件 最近感觉每个开发平台的控件基本都差不多,在Android中控件的事件和.net控件直接写事件有一定的区别,net事件可以直接界面进行事件的绑定哈.不过在Silverlight中,如果用MVVM设计模式的话,也可以自己为控件写Command命令的,可以取代控件的事件. TimePicker控件,也就是事件控件,可以用设置时间的.在页面拖入控件后,默认是显示系统时间的. 1 <TimePicker 2 android:id="@+id/timePicker1&qu

Android基础笔记(十)- 帧动画、补间动画详解、对话框

帧动画 补间动画Tween Animation 对话框以及面试中的注意点 帧动画 帧动画很简单,我们首先看一下Google官方解释This is a traditional animation in the sense that it is created with a sequence of different images. 意思表达的很明了,一个传统的动画是由一组不同的图片组成的.帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果. 创建一帧动画分为一下几步(支持4

Android开发之补间动画、

四种补间动画: 1.透明: 2.缩放: 3.位移: 4.旋转: 1 //点击按钮 实现iv 透明的效果 动画 2 public void click1(View v) { 3 //1.0意味着着完全不透明 0.0意味着完全透明 4 AlphaAnimation aa = new AlphaAnimation(1.0f, 0.0f); 5 aa.setDuration(2000); //设置动画执行的时间 6 aa.setRepeatCount(1); //设置重复的次数 7 aa.setRepe

实现逐帧动画和补间动画两种动画效果

1.逐帧动画(Frame Animation)通常在Android项目的res/drawable/目录下面定义逐帧动画的XML模板文件.编码的时候,需要在动画模板文件的<animation-list>标签中依次放入需要播放的图片,并设置好播放的间隔时间. <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"

Android 基础的三种动画 帧动画、补间动画、属性动画。

帧动画 drawable   animation 通过xml文件声明一个帧动画 ①在res目录下创建一个drawable目录 把用到的图片资源放到这个目录下 并且创建一个xml文件 根元素  animation-list可以设置一个属性 oneshot如果设置为true 动画只执行一次 执行之后停在最后一帧 animation-list 子元素item <?xml version="1.0" encoding="utf-8"?> 2. <anima

[android] 帧动画和补间动画

逐帧显示一张图片,连起来成为动画 在res/drawable/目录下,创建一个xxx.xml的文件 添加<animation-list>节点,设置是否循环android:oneshot:”false” 添加条目<item>节点,设置资源android:drawable=”@drawable/xxx” 设置执行时间,android:duration=”100” 逐帧添加对应的图片 获取ImageView对象,通过findViewById() 调用ImageView对象的setBack

Android开发之补间动画-布局添加动画

布局添加动画 使用步骤: 1.获取到布局的id 1 RelativeLayout ly=(RelativeLayout)findViewById(R.id.layout); 2.设置动画样式 1 ScaleAnimation sa = new ScaleAnimation(0, 1,0,1); //设置动画效果 2 sa.setDuration(3000); 3.使用布局动画管理器 1 LayoutAnimationController lac = new LayoutAnimationCont