`
wenzongliang
  • 浏览: 461570 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Android动画Animation

 
阅读更多

动画类型

Android 中的动画有帧动画,view动画,属性动画(3.0后的)

帧动画

AnimationDrawable - <animation-list>(它是一种drawable,对应xml只能放在drawable文件夹下,其他两种是放在anim中的)

view动画

AlphaAnimation - <alpha/>(透明度动画)

RotateAnimation - <rotate/>(旋转动画有轴心)

ScaleAnimation - <scale/>(缩放动画有轴心)

TranslateAnimation - <translate/>(移动动画)

AnimatorSet - <set> (view动画合集,几种动画同时播放,或顺序播放)

属性动画

ObjectAnimator - <objectAnimator> 

ValueAnimator - <animator>   

-------------------------------------------------------------------

1.AnimationDrawable 逐帧动画(是一种drawable,是一张一张图片的顺序展示,缺点是一般占内存比较大)

// xml中定义帧动画及引用
// 它是一种drawable所以只能放到drawable文件夹下不能放到anim下
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true">
    <item
        android:drawable="@mipmap/ic_launcher"
        android:duration="200" />
    <item
        android:drawable="@mipmap/ic_launcher"
        android:duration="200" />
    <item
        android:drawable="@mipmap/ic_launcher"
        android:duration="200" />
</animation-list>

//animation-list属性:
//visible:drawable的初始可见性,默认为false。
//oneshot:是否只播放一次且停在最后一帧上。
//variablePadding:是否随着其状态的改变而改变。默认是false

//animation-list中的item属性:
//drawable: 当前帧引用的drawable资源
//duration: 当前帧显示的时间(毫秒为单位)

//在代码中引用生成AnimationDrawable 
AnimationDrawable animationDrawable = (AnimationDrawable) getResources().getDrawable(R.drawable.animation_drawable);

//--------------------------------------------
//代码中定义帧动画:
animationDrawable = new AnimationDrawable(); 
animationDrawable.addFrame(drawable1, 100); 
animationDrawable.addFrame(drawable2, 100);
animationDrawable.addFrame(drawable3, 100);

//--------------------------------------------
//帧动画使用:
imageView.setBackgroundResource(animationDrawable);
animationDrawable.start(); 

 

2.view动画

//xml定义viewd动画及引用(此种动画xml是放到anim文件夹下的)

//view动画的共有属性:
//duration:属性为动画持续时间
//startOffset:延时多长时间开始执行
//fillAfter:动画结束后是否停留在最后一帧。
//interpolator:属性为动画插入器
 //accelerate_interpolator              加速-动画插入器
 //decelerate_interpolator              减速- 动画插入器
 //accelerate_decelerate_interpolator   加速-减速 动画插入器
 //例如android:interpolator="@android:anim/accelerate_decelerate_interpolator"
//注:坐标或宽高的取值,可以是绝对值或者的自己宽或高的比例值(一下无特殊说明取值都可以是这两种形式用的坐标系原点都在自己的view的左上角)


//alpha 透明度动画---------------
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="0"
    android:toAlpha="1" />

//fromAlpha:属性为动画起始时透明度(取值为0f-1f)
//toAlpha:属性为动画结束时透明度


//rotate 旋转动画效果-------------
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromDegrees="0"
    android:toDegrees="180" />

//pivotX:旋转轴心x轴坐标
//pivotY:旋转轴心y轴坐标
//fromDegrees:动画开始时的角度(顺时针为正值,逆时针为负值。取值可以大于360,水平状态为0度,)  
//toDegrees:动画结束时的角度


//scale 尺寸伸缩动画效果-------------
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromXScale="0%"
    android:toXScale="100%"
    android:fromYScale="100%"
    android:toYScale="100%"/>
	
//pivotX:旋转轴心x轴坐标
//pivotY:旋转轴心y轴坐标
//fromXScale:动画开始时的宽度
//toXScale:动画结束时的宽度
//fromYScale:动画开始时的高度
//toYScale:动画结束时的高度

 
//translate 位置转移动画效果-------------
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="100"
    android:fromYDelta="0"
    android:toYDelta="100" />
//fromXDelta:动画开始view左上角的x坐标
//toXDelta:动画结束时view左上角的x坐标
//fromYDelta动画开始时view左上角的y坐标
//toYDelta:动画结束时view左上角的y坐标   

//view动画合集-------------
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="true">
    <alpha />
    <rotate />
    <scale />
    <translate />
    <set>
        ...
    </set>
</set>

//shareInterpolator:集合中的动画是否共享插值器。如果合集中子项也有插值器,子项的起作用。
//xml中定义的view动画合集只能一起播放,顺序播放可以在代码中定义。

//在代码中引用生成动画
Animation myAnimation = AnimationUtils.loadAnimation(this,R.anim.my_action);

//--------------------------------------------
//代码中定义view动画:
//alpha 透明度动画
AlphaAnimation alphaAnimation=new AlphaAnimation(0.1f, 1.0f);

//rotate 旋转动画效果
public RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue,int pivotYType, float pivotYValue) 
//pivotYType,pivotYValue:可以取值为Animation.ABSOLUTE(绝对)、Animation.RELATIVE_TO_SELF(相对自身)、Animation.RELATIVE_TO_PARENT(相对父)

//scale 尺寸伸缩动画效果
public ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

//translate 位置转移动画效果
public TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue,int fromYType, float fromYValue, int toYType, float toYValue)

//AnimationSet view动画集合
//同时播放
AnimationSet set=new AnimationSet(true); 
set.addAnimation(alphaAnimation); 
set.addAnimation(rotateAnimation); 
set.addAnimation(scaleAnimation); 
set.addAnimation(translateAnimation); 
set.addAnimation(aSet); 

//顺序播放
AnimatorSet set = new AnimatorSet();
set.play(anim1).before(anim2);
set.play(anim2).with(anim3);
set.play(anim2).with(anim4)
set.play(anim5).after(amin2);
//--------------------------------------------
//view动画使用:
view.startAnimation(animation);

//动画可以设置监听
animation.setAnimationListener(new Animation.AnimationListener() {
     @Override
     public void onAnimationStart(Animation animation) {
         // 动画开始时执行
     }

     @Override
     public void onAnimationEnd(Animation animation) {
         // 动画结束时执行
     }

     @Override
     public void onAnimationRepeat(Animation animation) {
         // 动画每次重复时执行
     }
});

 

3.属性动画

 

//属性动画3.0以后才有
//ValueAnimator值动画执行器(是值的一系类变化,这些值付给对象属性形成了动画)

//1.定义
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1);
//2.设置执行时间
valueAnimator.setDuration(1000);

//3.设置插值器
valueAnimator.setInterpolator(new LinearInterpolator());

//4.设置估值器
valueAnimator.setEvaluator(new TypeEvaluator<MyClass>() {
    @Override
    public MyClass evaluate(float fraction, MyClass startValue, MyClass endValue) {
        return null;
    }
});

//5.设置值变化的监听
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        MyClass myClass = (MyClass) animation.getAnimatedValue();
    }
});

//6.开始动画
valueAnimator.start();

//设置执行者监听
valueAnimator.addListener(new Animator.AnimatorListener() {
    @Override
    public void onAnimationStart(Animator animation) {
        
    }

    @Override
    public void onAnimationEnd(Animator animation) {

    }

    @Override
    public void onAnimationCancel(Animator animation) {

    }

    @Override
    public void onAnimationRepeat(Animator animation) {

    }
});

//ObjectAnimator(继承了ValueAnimator)对象属性动画执行器(直接对属性做改变)。动画的属性必须有set,get方法。
ObjectAnimator.ofFloat(view, "rotationX", 0.0F, 360.0F).setDuration(500).start();  
 

 

 

分享到:
评论

相关推荐

    Android 动画 Animation Demo

    在Android开发中,动画(Animation)是提升用户体验和界面交互性的重要工具。Android动画主要分为两种类型:属性动画(Property Animation)和视图动画(View Animation)。本篇将深入探讨这两种动画机制,以及如何在...

    Android的动画Animation详解

    ### Android的动画Animation详解 #### 一、动画概述 Android平台提供了丰富的动画支持,通过不同的方式可以实现多种视觉效果,从而提升用户体验。Android动画主要分为两大类:Tween动画(渐变动画)和Frame-by-...

    Android动画源码 Animation

    在Android中,所有的动画都可以通过`Animation`类或者其子类来创建。`Animation`类提供了一些基本属性,如动画的持续时间、重复次数、是否反向播放等。开发者可以通过设置这些属性来定制动画效果。 接着,`BAnim_v7...

    Android动画之Animation

    Android动画之Animation的使用。包括变换动画Tween Animation,帧动画Frame Animation,布局动画Layout Animation,属性动画Property Animation

    Android的动画animation

    Android提供了两种主要的动画机制:补间动画(Tween Animation)和逐帧动画(Frame Animation),这两种动画方式都能帮助开发者创造出丰富多彩的视觉效果。 **补间动画(Tween Animation)** 补间动画主要用于改变...

    android动画介绍之 自定义Animation动画

    在这里,我们主要关注基于`Animation`类的自定义动画,它是Android早期版本中主要的动画实现方式。 一、理解Animation `Animation`是Android动画的基础类,它定义了动画的基本行为,如持续时间、重复次数等。`...

    android动画效果animation

    在Android开发中,动画效果是提升用户体验的关键因素之一。Android提供了丰富的动画系统,使得开发者能够为应用程序添加各种动态效果,从而提高应用的交互性和吸引力。本文将深入探讨Android动画效果的使用,包括对...

    android Animation动画实现loading效果

    在Android开发中,动画(Animation)是提升用户体验和视觉效果的重要工具之一,特别是在创建加载(Loading)效果时。本文将深入探讨如何使用Android Animation来实现动态的Loading效果。 一、Android Animation概述 ...

    Android-Animation动画之Tween Animation补间动画

    在Android中,补间动画由`Animation`类及其子类如`TranslateAnimation`、`ScaleAnimation`、`RotateAnimation`和`AlphaAnimation`来实现。这些子类分别对应于平移、缩放、旋转和透明度变化四种基本动画效果。 1. **...

    Android 属性动画(Property Animation)

    Android属性动画(Property Animation)是Android 3.0(API级别11)引入的一个强大功能,它极大地扩展了Android的动画系统,使得开发者能够实现更丰富、更动态的视觉效果。与视图动画(View Animation)不同,属性...

    android动画例子:tween animation and property animation

    Tween Animation,也称为帧动画,是在Android SDK早期版本中引入的,主要用于实现对象在屏幕上的简单移动、旋转、缩放等效果。Tween Animation基于关键帧的概念,即在动画过程中定义开始和结束状态,然后系统会自动...

    Android动画效果--渐变动画

    在Android开发中,动画效果是提升用户体验的关键因素之一。渐变动画是Android动画体系中的一种基本类型,它可以为用户界面带来生动和动态的感觉。本文将深入探讨四种主要的渐变动画:Alpha(透明度)、Scale(缩放)...

    android中的动画(Animation)详解

    在Android中,实现帧动画主要包括以下步骤: 1. **准备图像资源**:将所有要播放的图片放入`res/drawable`目录。 2. **创建动画XML**:在`res/anim`目录下创建一个XML文件,如上面的例子所示,`&lt;animation-list&gt;`...

    Android中的Animation的使用

    在Android中,我们可以通过`&lt;animation-list&gt;`标签在XML中定义帧动画。每个子元素`&lt;item&gt;`代表一个帧,设置`android:duration`决定每帧持续时间。例如: ```xml &lt;animation-list xmlns:android=...

    android 动画(animation)简单特效

    这个是一个简单的动画demo 用两种方式实现:1是xml+android代码;2是全android代码。 目的是帮忙一些朋友理解animation 的使用和学习 demo写的比较的简单。有什么不好的地方也请帮忙批评指出。共同进步

    Android动画之(PropertyAnimation)属性动画详解(一)

    在Android开发中,动画是提升用户体验的关键因素之一。属性动画(Property Animation)是Android 3.0(API级别11)引入的一种强大的动画系统,它极大地扩展了Android平台上的动画能力,使得开发者能够实现更为复杂和...

    Android Animation动画资源文件

    在Android开发中,动画是提升用户体验的关键因素之一。Android Animation主要分为两大类:补间动画(Tween Animation)和帧动画(Frame Animation)。本资源文件主要关注补间动画,这是一种通过改变对象属性(如位置、...

    Android 抖动动画效果

    首先,我们要知道在Android中,动画主要分为两种类型:补间动画(Tween Animation)和帧动画(Frame Animation)。抖动动画属于补间动画的一种,因为它涉及到对象的位置、大小或透明度等属性的变化。补间动画是通过...

    博客《Android动画之一:Drawable Animation》附带源码

    在Android中,Drawable不仅仅是一个静态图像,它还可以作为动画序列的容器。通过将多张图片放入一个Drawable资源文件中,我们可以创建一个帧动画。这种动画方式特别适合那些不需要复杂交互或过渡效果的场景。例如,...

Global site tag (gtag.js) - Google Analytics