Android动画--Frame Animation
-
- 新建工程 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中获取 ButtonCheckBox
-
*/
-
-
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中获取 ButtonCheckBox
-
*/
-
-
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)