动画(Animation) 之 (闪烁、左右摇摆、上下晃动等效果)

左右晃动的效果: (这边显示没那么流畅)

一、续播  (不知道取什么名字好,就是先播放动画A,
接着播放动画B)

有两种方式。

第一种,分别动画两个动画,A和B,
然后先播放动画A,设置A
的 AnimationListener。当onAnimationEnd触发(即A播放完毕)时,开始播放B。

[java] view
plain
copyprint?

  1. animation1.setAnimationListener(new Animation.AnimationListener() {

  2. @Override

  3. public void onAnimationStart(Animation animation) {
  4. }
  5. @Override

  6. public void onAnimationRepeat(Animation animation) {

  7. }
  8. @Override

  9. public void onAnimationEnd(Animation animation) {

  10. animation2.start();

  11. }

  12. );

第二种,写一个动画集AnimationSet,在其中定义动画A和B,为动画B设置startOffset,
其值就是前一个动画播放的所需的时间。

这边举一个例子,动画A是 透明度从 0.1 到 1.0 , 动画B是透明度从1.0到0.1,
 使用下面这个动画集你就可以看到整个变化过程。

[html] view
plain
copyprint?

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

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

  3. <alpha

  4. android:fromAlpha="0.2"

  5. android:toAlpha="1.0"

  6. android:duration="3000"

  7. />

  8. <alpha

  9. android:startOffset="3000"

  10. android:fromAlpha="1.0"

  11. android:toAlpha="0.2"

  12. android:duration="3000"

  13. />

  14. </set>

其中android:startOffset="3000"
 表示延迟3秒后再执行。 如果去掉其中的 android:startOffset="3000" ,
你就什么效果也看不到了。 因为两个动画会同时播放。

二、循环

有时候,我们可能需要实现一个图片不停闪烁的功能(比如天气预报中的紧急警报功能),
 或者有的时候我们需要实现图片左右晃动,都需要循环动画来实现。

同样,也有两种办法。

第一种,设置两个动画A 和 B, 动画A 是透明度 0 -1, 动画B是1 - 0, 然后对这两个动画都进行监听, A 结束执行B,
B结束执行A.. 无限循环...

第二种,利用Animation的setRepeatCount、setRepeatMode来实现动画循环。

比如闪烁(透明度亮 -> 暗, 暗->亮,如此循环)

[java] view
plain
copyprint?

  1. //闪烁

  2. AlphaAnimation alphaAnimation1 = new AlphaAnimation(0.1f, 1.0f);

  3. alphaAnimation1.setDuration(3000);

  4. alphaAnimation1.setRepeatCount(Animation.INFINITE);

  5. alphaAnimation1.setRepeatMode(Animation.REVERSE);

  6. iv.setAnimation(alphaAnimation1);

  7. alphaAnimation1.start();

alphaAnimation1.setRepeatCount(Animation.INFINITE); 表示重复多次。
也可以设定具体重复的次数,比如alphaAnimation1.setRepeatCount(5);

alphaAnimation1.setRepeatMode(Animation.REVERSE);表示动画结束后,反过来再执行。
该方法有两种值, RESTART 和 REVERSE。 RESTART表示从头开始,REVERSE表示从末尾倒播。

懒得屏幕录像了,类似下面的效果:

再比如左右摇摆

[java] view
plain
copyprint?

  1. //摇摆

  2. TranslateAnimation alphaAnimation2 = new TranslateAnimation(150f, 350f, 50, 50);

  3. alphaAnimation2.setDuration(1000);

  4. alphaAnimation2.setRepeatCount(Animation.INFINITE);

  5. alphaAnimation2.setRepeatMode(Animation.REVERSE);

  6. iv.setAnimation(alphaAnimation2);

  7. alphaAnimation2.start();

其中 iv 是一个ImageView。

好了,就写这么多。

http://blog.csdn.net/feng88724/article/details/7000314

时间: 2024-10-19 13:27:29

动画(Animation) 之 (闪烁、左右摇摆、上下晃动等效果)的相关文章

动画(Animation) 它 (闪烁、左右摇摆、跷跷板等功效)

一侧到另一侧的影响: (这里显示的是并不那么顺利) 一.续播  (不知道取什么名字好,就是先播放动画A, 接着播放动画B) 有两种方式. 第一种.分别动画两个动画,A和B, 然后先播放动画A,设置A 的 AnimationListener.当onAnimationEnd触发(即A播放完成)时,開始播放B. animation1.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnim

css3 动画(animation)-简单入门

css3之动画(animation) css3中我们可以使用动画,由于取代以前的gif图片,flash动画,以及部分javascript代码(相信有很多同学都用过jquery中的animate方法来做一些动画).具体如何使用呢??? 首先定义一个动画,然后引用动画. 定义一个动画要使用@keyframes,然后跟上你要定义的动画的名字.关键字"from"表示开始, "to"表示结束,等同于0% 和 100%.最好使用百分比来表示变化发生的时间,这样的话还可以定义从开

动画(Animation) 、 高级动画(Core Animation)

1 演示UIImage制作的动画 1.1 问题 UIImage动画是IOS提供的最基本的动画,通常用于制作一些小型的动画,本案例使用UIImage制作一个小狗跑动的动画,如图-1所示: 图-1 1.2 方案 首先在创建好的Xcode项目的Storyboard中拖放一个ImageView控件,并关联成TRViewController的属性imageView. 然后在viewDidLoad方法中使用工厂方法animatedImageNamed:创建UIImage对象image. 最后将imageVi

《The CG Tutorial》阅读笔记——动画 Animation

这段时间阅读了英文版的NVidia官方的<The CG Tutorial>,通过它来学习基本的图形学知识和着色器编程. 在此做一个阅读记录. 动画 Animation 一.基于时间的运动 Movement in Time 实现动画渲染,需要应用程序对时间进行监测,并将它作为一个全局变量传递给着色器. 尽量在GPU上使用顶点着色器执行动画计算是一种高效的动画实现方式,它能够释放CPU,让CPU处理更多的复杂计算,比如碰撞检测,人工智能与游戏玩法. 二.一个做脉冲运动的对象 A Pulsating

动画animation的三个应用(漂浮的白云、旋转的星球、正方体合成)

× 目录 [1]漂浮的白云 [2]旋转的星球 [3]正方体合成 前面的话 前面介绍过动画animation的详细用法,本文主要介绍动画animation的三个效果 漂浮的白云 [效果演示] [简要介绍] 漂浮的白云主要通过远景白云和近景白云来实现立体漂浮效果.远景和近景分别使用两张背景图片,通过改变其背景定位来实现白云移动效果,通过设置不同的动画持续时间来实现交错漂浮的效果 [主要代码] .box{ position: relative; height: 300px; width: 500px;

使用CSS3动画 animation 来控制元素的显示和隐藏

CSS3中 animation 和 transition 俩样式都能创建动画效果,而且是后台C++执行的,所以效率比普通jQuery的js模拟动画的效率高很多,所以建议大家能用css实现的效果都用css. transition的使用比较简单,这里就不介绍了,着重为大家介绍下 animation . animation 的css属性有很多,本文通过 animation-name 来控制启动动画和转换动画,以下是一个通过 animation 来控制元素的显示和隐藏的例子(仅支持webkit): <!

CSS3的变形transform、过渡transition、动画animation学习

学习CSS3动画animation得先了解一些关于变形transform.过渡transition的知识 这些新属性大多在新版浏览器得到了支持,有些需要添加浏览器前缀(-webkit-.-moz-.-ms-.-o-),本文为简化内容,直接使用了原版属性 根据不同属性的支持度,在实际使用的时候需要添加相应的浏览器前缀支持 目录: 变形transform 过渡transition 动画animation 一.变形transform 变形有rotate旋转.scale缩放.translate位移.sk

css3动画-animation

animation驱使一组css style变化到另外一组css style,它可以定义keyframes的集合,指定style的开始和结束状态,它是transition的增强. 配置animation animation-delay:从加载到开始执行的延迟 animation-direction:normal|reverse|alternate|alternate-reverse   参考 normal:往前执行,完成后又回到原点 reverse:和定义的方向相反,完成后回到原点开始执行 al

Android 动画animation 深入分析

转载请注明出处:http://blog.csdn.net/farmer_cc/article/details/18259117 Android 动画animation 深入分析 前言:本文试图通过分析动画流程,来理解android动画系统的设计与实现,学习动画的基本原则,最终希望能够指导动画的设计. 0 本文中用到的一些类图 1 view animation 调用方法:view.startAnimation(animation); [java] view plaincopy public voi