您的位置:首页 > 移动开发 > Android开发

Android动画--Frame Animation

2012-04-19 21:29 330 查看
新建工程 myFrameAnimation

在main.xml布局中添加view子类,调整一下,效果如下:



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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:prientation="vertical" android:layout_width="fill_parent"

android:layout_height="fill_parent">

<LinearLayout android:prientation="horizontal"

android:layout_width="fill_parent" android:layout_height="wrap_content"

android:background="@drawable/bt_group_back" android:layout_marginTop="10px">

<Button android:text="播放动画" android:layout_width="100px"

android:id="@+id/Button_start" android:layout_height="fill_parent"></Button>

<Button android:layout_width="100px" android:text="停止动画"

android:id="@+id/Button_stop" android:layout_height="fill_parent"></Button>

<CheckBox android:text="动画重复" android:layout_width="100px"

android:id="@+id/CheckBox_ifCycle_orNot" style="?android:attr/starStyle"

android:layout_height="fill_parent"></CheckBox>

</LinearLayout>

<ImageView android:id="@+id/rocket_image"

android:layout_width="80px" android:layout_height="80px"

android:background="@drawable/android_large"

android:layout_marginLeft="100dp" android:layout_marginTop="100dp"></ImageView>

</LinearLayout>

复制代码

找几个动态图片,把它分成单个图。(主要是为了讲解/是用Frame Animation效果,AnimationDrawable)

修改mainActivity.java的代码

package zyf.my.frame.animation;

import android.app.Activity;

import android.graphics.drawable.AnimationDrawable;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.ImageView;

import android.widget.Toast;

public class myFrameAnimatino extends Activity implements Button.OnClickListener {

/** Called when the activity is first created. */

AnimationDrawable frameAnimation;

/*

* 声明AnimationDrawable 可绘制动画 对象frameAnimation

*/

ImageView myImage;

/*

* 图片View ImageView

*/

Button start,stop;

CheckBox Cycle;

boolean isChecked_cycle=true;

/*

* (non-Javadoc)

* @see android.app.Activity#onCreate(android.os.Bundle)

*/

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

start=(Button) findViewById(R.id.Button_start);

stop=(Button) findViewById(R.id.Button_stop);

Cycle=(CheckBox) findViewById(R.id.CheckBox_ifCycle_orNot);

/*

* findViewById()从XML中获取 Button CheckBox

*/

myImage = (ImageView) findViewById(R.id.rocket_image);

/*

* findViewById()从XML中获取ImageView 对象myImage

*/

myImage.setBackgroundResource(R.anim.myframeanimation);

/*

* ImageView.setBackgroundResource()设置 图片View的背景图片

* 这里是把帧动画 myframeanimation加到 图片View的背景中

*/

frameAnimation = (AnimationDrawable) myImage.getBackground();

/*

* myImage.getBackground()获得背景的Drawable的对象,转换成AnimationDrawable

*/

start.setOnClickListener(this);

stop.setOnClickListener(this);

}

/*

* (non-Javadoc)

* @see android.app.Activity#onTouchEvent(android.view.MotionEvent)

*/

@Override

public boolean onTouchEvent(MotionEvent event) {

frameAnimation.setOneShot(isChecked_cycle);

/*

* 添加触摸事件处理方法

*/

// TODO Auto-generated method stub

if(event.getAction()==MotionEvent.ACTION_DOWN){

/*

* MotionEvent.getAction()获取事件动作

* MotionEvent.ACTION_DOWN 向下的手势动作

*/

/*event.getAction() 返回正被执行的动作种类:

* 是 ACTION_DOWN, ACTION_MOVE, ACTION_UP, 或 ACTION_CANCEL中的一个.

*/

frameAnimation.start();

/*

* 启动帧动画效果

*/

return true;

}

return super.onTouchEvent(event);

}

/*

* (non-Javadoc)

* @see android.view.View.OnClickListener#onClick(android.view.View)

*/

@Override

public void onClick(View button) {

// TODO Auto-generated method stub

switch (button.getId()) {

case R.id.Button_start:{

if(Cycle.isChecked()){

Toast.makeText(this, "动画重复", Toast.LENGTH_LONG).show();

isChecked_cycle=false;

}else{

Toast.makeText(this, "不重复", Toast.LENGTH_LONG).show();

isChecked_cycle=true;

}

/*

* 复选按钮选中, 动画重复播放, AnimationDrawable.setOneShot(false)

* 复选按钮未选中,动画不重复播放,AnimationDrawable.setOneShot(true)

*/

frameAnimation.setOneShot(isChecked_cycle);

/*

* 设置重复与否

*/

frameAnimation.start();

/*

*启动帧动画效果

*/

}

break;

case R.id.Button_stop:{

if(frameAnimation.isRunning()){

/*

* AnimationDrawable.isRunning(),判断帧动画是否在运行,true---运行中

* 如果动画正在运行,可以停止

*/

frameAnimation.stop();

/*

*停止帧动画效果

*/

}

}

break;

default:

break;

}

}

}

复制代码

运行结果





2009-6-17 05:10:39 上传
下载附件 (29.18
KB)

新建工程 myFrameAnimation

在main.xml布局中添加view子类,调整一下,效果如下:



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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:prientation="vertical" android:layout_width="fill_parent"

android:layout_height="fill_parent">

<LinearLayout android:prientation="horizontal"

android:layout_width="fill_parent" android:layout_height="wrap_content"

android:background="@drawable/bt_group_back" android:layout_marginTop="10px">

<Button android:text="播放动画" android:layout_width="100px"

android:id="@+id/Button_start" android:layout_height="fill_parent"></Button>

<Button android:layout_width="100px" android:text="停止动画"

android:id="@+id/Button_stop" android:layout_height="fill_parent"></Button>

<CheckBox android:text="动画重复" android:layout_width="100px"

android:id="@+id/CheckBox_ifCycle_orNot" style="?android:attr/starStyle"

android:layout_height="fill_parent"></CheckBox>

</LinearLayout>

<ImageView android:id="@+id/rocket_image"

android:layout_width="80px" android:layout_height="80px"

android:background="@drawable/android_large"

android:layout_marginLeft="100dp" android:layout_marginTop="100dp"></ImageView>

</LinearLayout>

复制代码

找几个动态图片,把它分成单个图。(主要是为了讲解/是用Frame Animation效果,AnimationDrawable)

修改mainActivity.java的代码

package zyf.my.frame.animation;

import android.app.Activity;

import android.graphics.drawable.AnimationDrawable;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.ImageView;

import android.widget.Toast;

public class myFrameAnimatino extends Activity implements Button.OnClickListener {

/** Called when the activity is first created. */

AnimationDrawable frameAnimation;

/*

* 声明AnimationDrawable 可绘制动画 对象frameAnimation

*/

ImageView myImage;

/*

* 图片View ImageView

*/

Button start,stop;

CheckBox Cycle;

boolean isChecked_cycle=true;

/*

* (non-Javadoc)

* @see android.app.Activity#onCreate(android.os.Bundle)

*/

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

start=(Button) findViewById(R.id.Button_start);

stop=(Button) findViewById(R.id.Button_stop);

Cycle=(CheckBox) findViewById(R.id.CheckBox_ifCycle_orNot);

/*

* findViewById()从XML中获取 Button CheckBox

*/

myImage = (ImageView) findViewById(R.id.rocket_image);

/*

* findViewById()从XML中获取ImageView 对象myImage

*/

myImage.setBackgroundResource(R.anim.myframeanimation);

/*

* ImageView.setBackgroundResource()设置 图片View的背景图片

* 这里是把帧动画 myframeanimation加到 图片View的背景中

*/

frameAnimation = (AnimationDrawable) myImage.getBackground();

/*

* myImage.getBackground()获得背景的Drawable的对象,转换成AnimationDrawable

*/

start.setOnClickListener(this);

stop.setOnClickListener(this);

}

/*

* (non-Javadoc)

* @see android.app.Activity#onTouchEvent(android.view.MotionEvent)

*/

@Override

public boolean onTouchEvent(MotionEvent event) {

frameAnimation.setOneShot(isChecked_cycle);

/*

* 添加触摸事件处理方法

*/

// TODO Auto-generated method stub

if(event.getAction()==MotionEvent.ACTION_DOWN){

/*

* MotionEvent.getAction()获取事件动作

* MotionEvent.ACTION_DOWN 向下的手势动作

*/

/*event.getAction() 返回正被执行的动作种类:

* 是 ACTION_DOWN, ACTION_MOVE, ACTION_UP, 或 ACTION_CANCEL中的一个.

*/

frameAnimation.start();

/*

* 启动帧动画效果

*/

return true;

}

return super.onTouchEvent(event);

}

/*

* (non-Javadoc)

* @see android.view.View.OnClickListener#onClick(android.view.View)

*/

@Override

public void onClick(View button) {

// TODO Auto-generated method stub

switch (button.getId()) {

case R.id.Button_start:{

if(Cycle.isChecked()){

Toast.makeText(this, "动画重复", Toast.LENGTH_LONG).show();

isChecked_cycle=false;

}else{

Toast.makeText(this, "不重复", Toast.LENGTH_LONG).show();

isChecked_cycle=true;

}

/*

* 复选按钮选中, 动画重复播放, AnimationDrawable.setOneShot(false)

* 复选按钮未选中,动画不重复播放,AnimationDrawable.setOneShot(true)

*/

frameAnimation.setOneShot(isChecked_cycle);

/*

* 设置重复与否

*/

frameAnimation.start();

/*

*启动帧动画效果

*/

}

break;

case R.id.Button_stop:{

if(frameAnimation.isRunning()){

/*

* AnimationDrawable.isRunning(),判断帧动画是否在运行,true---运行中

* 如果动画正在运行,可以停止

*/

frameAnimation.stop();

/*

*停止帧动画效果

*/

}

}

break;

default:

break;

}

}

}

复制代码

运行结果





2009-6-17 05:10:39 上传
下载附件 (29.18
KB)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: