我在网上找 Android动画的时候发现,很多都是我上一篇哪个样子的文章。很少有一帧一帧的动画。请大家不要忘记传统动画。 下面就给个具体的XML例子,来定义一帧一帧的动画: 上面的XML就定义了一个Frame Animation,其包含6帧动画,6帧动画中分别应用了drawable中的6张图片:ball1,ball2,.....ball6 每帧动画持续50毫秒。

然后我们将以上XML保存在res/anim/文件夹下,命名为simple_animation.xml,显示动画的代码:
  1. <? xml version ="1.0" encoding ="UTF-8" ?>
    < LinearLayout
    android:layout_width ="fill_parent"
    android:layout_height ="fill_parent"
    android:orientation ="vertical"
    xmlns:android ="http://schemas.android.com/apk/res/android"
    >
    < ImageView
    android:id ="@+id/imageView"
    android:layout_width ="wrap_content"
    android:layout_height ="wrap_content"
    android:gravity ="center"
    android:layout_centerHorizontal ="true"
    />
    < TextView
    android:layout_width ="fill_parent"
    android:layout_height ="wrap_content"
    android:text ="aaaaaaaaaaaaaaaaaaaaa"

    />
    </ LinearLayout >

Java 代码
public class AlarmAlert extends Activity
{

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);

ImageView img=(ImageView)findViewById(R.id.imageView);
img.setBackgroundResource(R.anim.simple_animation);

MyAnimationRoutine mar= new MyAnimationRoutine();
MyAnimationRoutine2 mar2= new MyAnimationRoutine2();
Timer t= new Timer( false);
t.schedule(mar,100);
Timer t2= new Timer( false);
t2.schedule(mar2,5000);

}
class MyAnimationRoutine extends TimerTask{
@Override
public void run(){
ImageView img=(ImageView)findViewById(R.id.imageView);
AnimationDrawable frameAnimation=(AnimationDrawable)
img.getBackground();
frameAnimation.start();

}
}
class MyAnimationRoutine2 extends TimerTask{
@Override
public void run()
{
ImageView img=(ImageView) findViewById(R.id.imageView);
AnimationDrawable frameAnimation=(AnimationDrawable)
img.getBackground();
frameAnimation.stop();
}
}
代码运行的结果6张图片按照顺序的播放一次.有一点需要强调的是:启动Frame Animation动画的不能在OnCreate()中,因为在OnCreate()进行内部控制,所以我建子类,开始和停止方法。不然OnCreate()中启动动画,就只能看到第一张图片。 下面,阅读Android SDK中对AnimationDrawable的介绍,有个简单的了解:

AnimationDrawable
获取、设置动画的属性
int getDuration() 获取动画的时长
int getNumberOfFrames() 获取动画的帧数
boolean isOneShot()
Void setOneShot(boolean oneshot)
获取oneshot属性
设置oneshot属性
void inflate(Resurce r,XmlPullParser p,
AttributeSet attrs)

增加、获取帧动画
Drawable getFrame(int index) 获取某帧的Drawable资源
void addFrame(Drawable frame,int duration) 为当前动画增加帧(资源,持续时长)
动画控制
void start() 开始动画
void run() 外界不能直接掉调用,使用start()替代
boolean isRunning() 当前动画是否在运行
void stop() 停止当前动画
AnimationDrawable
获取、设置动画的属性
int getDuration() 获取动画的时长
int getNumberOfFrames() 获取动画的帧数
boolean isOneShot()
Void setOneShot(boolean oneshot)
获取oneshot属性
设置oneshot属性
void inflate(Resurce r,XmlPullParser p,
AttributeSet attrs)

增加、获取帧动画
Drawable getFrame(int index) 获取某帧的Drawable资源
void addFrame(Drawable frame,int duration) 为当前动画增加帧(资源,持续时长)
动画控制
void start() 开始动画
void run() 外界不能直接掉调用,使用start()替代
boolean isRunning() 当前动画是否在运行
void stop() 停止当前动画


本文出自 “luojing” 博客,转载请与作者联系!

更多相关文章

  1. Android屏幕切换左右滑动
  2. Android(安卓)UI常用实例 如何实现欢迎界面(Splash Screen)
  3. Android(安卓)Animator(Android动画)
  4. Android——layout_marginStart和layout_marginEnd的详细讲解
  5. Android(安卓)完美解决自定义preference与ActivityGroup UI更新
  6. 【Android】动画 —— view高度渐变的动画
  7. Android中Lottie的简单使用
  8. Android(安卓)用户界面---样式和主题(Styles and Themes)(一)
  9. Android(安卓)Demo:读取本地图库与调用摄像头拍摄

随机推荐

  1. Android(安卓)4.0 鐨勫彂甯冧簡
  2. Android语音播报、后台播报、语音识别
  3. 开源项目之Android(安卓)GreenDroid(界面
  4. Android之通过AIDL机制实现进程间的通讯
  5. Android(安卓)2.3发短信详细流程
  6. Android设备支持USB转RJ45有线网卡( 沐阳
  7. Android(安卓)dialog回弹效果
  8. Android之SystemUI加载流程和NavigationB
  9. Android视图的截图
  10. android:shape的使用