第七章 实现炫酷效果—图像和动画(6)

7.8渐变动画—Frame Animation

FrameAnimation是按顺序播放事先做好的图像,跟播放电影类似。可以参考前面的7.3.7章节——《简单的帧动画—AnimationDrawable》。


经验分享:

AnimationDrawable也可以通过代码来生成AnimationDrawable对象:

AnimationDrawable mAnimationDrawable = new AnimationDrawable();

mAnimationDrawable.addFrame(Drawable frame,int duration);//来添加帧数

Drawable mDrawable = mAnimationDrawable. getFrame(int index);//来获取

 

以下提供一个java代码生成动画的例子。


// import略

public class myAnimation extends Activity implements OnClickListener {

private Button mButton;

private AnimationDrawable mAnimationDrawable;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mAnimationDrawable = new AnimationDrawable();

mAnimationDrawable.addFrame(getResources().getDrawable(R.drawable.img_1), 200);

mAnimationDrawable.addFrame(getResources().getDrawable(R.drawable.img_2), 200);

mAnimationDrawable.addFrame(getResources().getDrawable(R.drawable.img_3), 200);

mButton = (Button) findViewById(R.id.button_id);

mButton.setBackgroundDrawable(mAnimationDrawable);

mButton.setOnClickListener(this);

}

public void onClick(View button) {

switch (button.getId()) {

case R.id.button_id: {

// 动画是否正在运行

if(mAnimationDrawable.isRunning()){

// 停止动画播放

mAnimationDrawable.stop();

} else{

// 开始或者继续动画播放

mAnimationDrawable.start();

}

}

break;

}

}

7.9随意组合动画效果—AnimationSet

AnimationSet是一个animation的一个子类,可以将多个animation放到一个list集合中。实际上是animation的一个集合。需要对animation的基本设置可以通过animationset来设置。如果需要对一个控件进行多种动画设置,可以采用animationset。

下面举个例子:


AnimationSet mAnimationSet = new AnimationSet(true);

mAnimationSet.setFillEnabled(true);

mAnimationSet.setInterpolator(new BounceInterpolator());

TranslateAnimation ta = new TranslateAnimation(-300, 100, 0, 0);

ta.setDuration(2000);

mAnimationSet.addAnimation(ta);

TranslateAnimation ta2 = new TranslateAnimation(100, 0, 0, 0);

ta2.setDuration(2000);

ta2.setStartOffset(2000);

mAnimationSet.addAnimation(ta2);

// 设置动画时间

mAnimationSet.setDuration(2000);

// 动画重复次数(-1 表示一直重复)

mAnimationSet.setRepeatCount(-1);

// 使用和前面的Animation是一样的

mButton.startAnimation(mAnimationSet);


经验分享:

mAnimationSet整体认为是一个动画,mAnimationSet开始的时候其中的子动画就一起开始了。如果需要按顺序的播放出来,可以设置各自的subAnimation.setStartOffset(2000);这样就可以在开始之后的2秒后再播放subAnimation。

7.10加速的工具—Interpolator

android.view.animation.Interpolator定义了动画变化的速率。

在animations下定义了以下几种interpolator:

l  AccelerateDecelerateInterpolator—在动画开始与结束的地方速率改变比较慢,在中间的时候较快。

l  AccelerateInterpolator—在动画开始的时候改变较慢,然后开始加速。

l  CycleInterpolator—动画循环播放特定次数,速率改变沿着正弦曲线。

l  DecelerateInterpolator—在动画开始的时候叫慢,然后开始减速。

l  LinearInterpolator—动画以均匀速率改变。

下面提供一个如何设置animation的Interpolator例子。

在xml中的设置:


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

在Java代码中的设置:


mAnimationSet.setInterpolator(new AccelerateDecelerateInterpolator());

时间: 2024-08-30 13:24:27

第七章 实现炫酷效果—图像和动画(6)的相关文章

第七章 实现炫酷效果—图像和动画(1)

第七章实现炫酷效果-图像和动画 学完上一章,相信读者对Android画图核心部分有了一定的了解.为了实现更加炫酷的效果,我们可能会在我们的应用中使用大量的图像和动画效果. 本章我们将详细介绍Android中的各种图像对象的使用,以及动画的使用.学习完本章,相信读者可以独立开发出有着绚丽的视觉效果的Android应用了. 7.1 Android的几种常用图像类型 Android中的图像对象,主要有android.graphics.Bitmap(位图).android.graphics.drawab

第七章 实现炫酷效果—图像和动画(3)

7.3.6超炫的特效-ShapeDrawable 当你想去使用一些常用的图形,ShapeDrawable对象可能会对你有很大的帮助.当然通过ShapeDrawable,你可以通过编程画出任何你想到的图像与样式,因为ShapeDrawable有自己的draw()方法. ShapeDrawable继承了Drawable,所以你可以调用Drawable里有的函数,使用方法和其他的Drawable的子类差不多.下面我们来介绍它的特色. 通过ShapeDrawable的XML构造文件来了解ShapeDra

第七章 实现炫酷效果—图像和动画(5)

7.7渐变动画-Tween Animation 7.7.1Tween Animation简介 一个Tween动画将对视图对象中的内容进行一系列简单的转换(位置,大小,旋转,透明性).如果你有一个文本视图对象,你可以移动它,旋转它,让它变大或让它变小,如果文字下面还有背景图像,背景图像也会随着文件进行转换. 可以使用XML来定义Tween Animation.首先将动画的XML文件在工程中res/anim目录,这个文件必须包含一个根元素,可以使<alpha><scale> <t

第七章 实现炫酷效果—图像和动画(2)

7.3变化多端-Drawable(绘图类) Drawable资源是Android系统中使用最广泛.最灵活的资源,可以直接使用png.jpg.gif.9.png等图片做为资源文件,也可以使用多种XML文件做为资源文件. 下面详细介绍下各种Drawable资源. 7.3.1Drawable的一些常用子类 Android平台的Drawable代表可以绘制在屏幕上的资源,可以使用getDrawable(int)从资源文件中获取Drawable资源,或者在XML资源文件中采用@drawable方式来引用一

10大炫酷的HTML5文字动画特效欣赏

文字是网页中最基本的元素,在CSS2.0时代,我们只能在网页上展示静态的文字,只能改变他的大小和颜色,显得枯燥无味.随着HTML5的发展,现在网页中的文字样式变得越来越丰富了,甚至出现了文字动画,HTML5和CSS3的强大之处就在于此.本文分享的10款炫酷的HTML5文字动画特效非常不错,一起来看看吧. 1.HTML5 Canvas粒子效果文字动画特效 之前我们分享过很多超酷的文字特效,其中也有利用HTML5和CSS3的.今天我们要来分享一款基于HTML5 Canvas的文字特效,输入框中输入想

html5跟随鼠标炫酷网站引导页动画特效

html5跟随鼠标炫酷网站引导页动画特效一款非常不错的引导页,文字效果渐变,鼠标跟随出绚丽的条纹.html5炫酷网站引导页,鼠标跟随出特效. 体验效果:http://hovertree.com/texiao/html5/ 效果图: 以下是源代码: 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Co

开源分享三(炫酷的Android Loading动画)

开源分享三(炫酷的Android Loading动画) 分享GitHub上的一些Loading,为了提升产品用户体验,一个好的Loading必然是不可缺少的,对于一些耗时需要用户等待的页面来说会转移用户注意力,不会显得那么烦躁,所以你可以看到市面上一些App中的各种各样的Loading动画,从这些实现思路上可以打开你们自己的思维,没准也会有创新的Loading动画出现. android-shapeLoadingView 新版58同城加载页面动画. CircleProgress 一个效果很酷炫很创

8个经典炫酷的HTML5 Canvas动画欣赏

HTML5非常强大,尤其是Canvas技术的应用,让HTML5几乎可以完成所有Flash能完成的效果.本文精选了8个经典炫酷的HTML5 Canvas动画欣赏,每一个都提供全部的源代码,希望对你有所帮助. 1.HTML5 Canvas可拖动的弹性大树摇摆动画 今天让我们继续来分享一个炫酷的HTML5动画,它是一款基于HTML5 Canvas的大树摇摆动画,这款HTML5动画的特点是我们可以拖拽树枝,从而让整棵树摇摆起来,这样就真实地模拟了大树从摇摆到静止的整个过程,相当逼真. 在线演示     

经典炫酷的HTML5/jQuery动画应用示例及源码

jQuery是一款普遍受前端开发者欢迎的Javascript框架,但是开发者貌似更关注jQuery开发的插件,海量的jQuery插件让前端开发者非常方便.HTML5的加入让jQuery这个家族更加丰富多彩,因为利用HTML5,我们可以制作更加绚丽动感的动画特效,HTML5结合jQuery,真是我们开发者的福利啊.本文分享了一些经典炫酷的HTML5/jQuery动画应用,喜欢的朋友可以分享和收藏. jquery视差滑块幻灯特效 很传统的一款jQuery焦点图插件,但是该焦点图插件是宽屏的,整体看起