Android三种动画原理

Android起初有两种动画:Frame Animation(逐帧动画) Tween Animation(补间动画)

两种动画的工作原理:

Frame Animation:大体意思就是将UI设计的多张图片组成的动画,然后在将他们组合起来连贯进行播放,类似于早期电影的工作原理。

Tween Animation:是对某个View进行一系列的动画的操作,包括淡入淡出(Alpha),缩放(Scale),平移(Translate),旋转(Rotate)四种模式

然而在从Android3.0版本开始后,Android系统给我们提供了一种全新的动画模式,Property Animation(属性动画),

Tween Animation动画的几大缺点:

1:Tween Animation(补间动画)只是针对于View,超脱了View就无法操作了,这句话的意思是:假如我们需要对一个Button,ImageView,LinearLayout或者是其他的继承自View的各种组件进行动画的操作时,Tween Animation是可以帮我们完成我们需要完成的功能的,但是如果我们需要用到对一个非View的对象进行动画操作的话,那么补间动画就没办法实现了。举个例子:比如我们有一个自定义的View,在这个View中有一个Point对象用于管理坐标,然后在onDraw()方法中的坐标就是根据该Pointde坐标值进行绘制的。也就是说,如果我们可以对Point对象进行动画操作,那么整个自定义的View,那么整个自继承View的当前类就都有了动画,但是我们的目的是不想让View有动画,只是对动画中的Point坐标产生动画,这样补间动画就不能满足了。

2:Tween Animation动画有四种动画操作(移动,缩放,旋转,淡入淡出),但是我们现在有个需求就是将当前View的背景色进行改变呢?抱歉Tween Animation是不能帮助我们实现的。

3:Tween Animation动画只是改变View的显示效果而已,但是不会真正的去改变View的属性,举个例子:我们现在屏幕的顶部有一个小球,然后通过补间动画让他移动到右下角,然后我们给这个小球添加了点击事件,希望位置移动到右下角的时候点击小球能的放大小球。但是点击事件是绝对不会触发的,原因是补间动画只是将该小球绘制到了屏幕的右下角,实际这个小球还是停在屏幕的顶部,所以你在右下角点击是没有任何反应的。

针对于这些问题,Android在3.0版本之后引入了Property Animation(属性动画),通过Property Animation(属性动画)我们可以看出来,属性动画不再只是针对View进行设计的了,也就证明不只是限定在移动,缩放,旋转和淡入淡出这几种动画的操作了,同时也不再只是一种视觉上的动画效果了,属性动画其实是一种不断地对值进行操作的机制,并将值赋到指定对象的指定属性上,可以是任意对象的任意属性。所以我们仍然可以对一个View进行移动和缩放,同时也可以对自定义View中的Point对象进行动画操作了。我们只需要告诉系统动画的运行时长,需要执行那种类型的动画以及动画的初始值和结束值。

时间: 2024-07-31 06:31:17

Android三种动画原理的相关文章

Android动画 三种动画

Android可以使用三种动画 Frame Animation-帧动画 ,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果 Tween Animation-补间动画,给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变,只能应用于View对象:只是改变了View对象绘制的位置,而没有改变View对象本身 Property Animation-属性动画,更改的是对象的实际属性:不止可以应用于View,还可以应用于任何对象 参考:http://www.cnblo

Activity.overridePendingTransition三种动画形式调试记录

定义 Activity A,Activity B. Activity.overridePendingTransition 是在 A 启动 B 时定义这个过程中用什么动画的. 常见三种动画形式: 1) A slide up B still,  2) A disapper B slide up,  3) A  and B both slide up. 1) A slide up B still 核心代码: slide_up_z.xml <?xml version="1.0" enco

Android三种实现自定义ProgressBar的方式介绍

一.通过动画实现 定义res/anim/loading.xml如下: View Row Code<?xml version="1.0" encoding="UTF-8"?><animation-list android:oneshot="false"xmlns:android="http://schemas.android.com/apk/res/android"><item android:du

[Android]三种广播接收器1

/************ 动态注册 ************/ ActivityMain.java  package home.lee.broadcastreceiver; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.Inten

Splash闪屏页-三种动画效果

三种动画效果 旋转 RotateAnimation 缩放 ScaleAnimation 渐变 AlphaAnimation 动画效果集合 AnimationSet 1 // 初始化欢迎页面的动画 2 3 private void initViews(){ 4 5 RelativeLayout rlRoot = (RelativeLayout) findViewById(R.id.rl_root); 6 7 RotateAnimation rotate = new RotateAnimation(

Android三种左右滑动效果 手势识别

Android三种左右滑动效果 手势识别(转) 手势识别 1.onCreate中添加GestureDetector mGestureDetector; //监听手势事件 mGestureDetector = new GestureDetector(this, onGestureListener); 2.//实现处理事件 OnGestureListener onGestureListener = new OnGestureListener() { //添加未实现的方法 }; 3.重写onTouch

android四种动画

http://www.jb51.net/article/32339.htm android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 TranslateAnimation 位移动画效果 RotateAnimation 旋转动画效果 本节讲解ScaleAnimation 动画, ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType,

android 三种弹出框之一poprpWindow

poprpWindow 在android的弹出框我目前了解到的是有三种:AlertDialog,poprpWindow,Activity伪弹框, AlertDialog太熟悉了,这里就不介绍了 就先看看poprpWindow API 给出的解释是: 意思就是一个展示view的弹出窗体,这个弹出窗体将会浮动在当前activity的最上层, 它和AlertDialog的区别是:在android中弹出框有两种方式:AlertDialog和PopupWindow,它们的不同点在于:      1.Ale

Android三种基本的加载网络图片方式(转)

Android三种基本的加载网络图片方式,包括普通加载网络方式.用ImageLoader加载图片.用Volley加载图片. 1. [代码]普通加载网络方式 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60