View---Animation
一:view.startAnimation(mAnimation);
//1.new TransAimation()?
//2.AnimationUtility.Load...(R.an.**).
二:view.setBackgroundDrawable(mAnimationDrawable);
//1.new AnimationDrawable();
//2.mAnimationDrawable=(AnimationDrawable)this.getResources().getDrdawable(R.an.*);
=======================================================================
?
android与逐帧动画:
效果图:
?
当我们点击按钮时,该图片会不停的旋转,当再次点击按钮时,会停止在当前的状态。
?
activity代码:
view plaincopy to clipboardprint?
package cn.com.chenzheng_java.animation;??
?
import android.app.Activity;??
import android.graphics.drawable.AnimationDrawable;??
import android.os.Bundle;??
import android.view.View;??
import android.widget.ImageView;??
/**?
?* @description android中的逐帧动画.?
?* 逐帧动画的原理很简单,跟电影的播放一样,一张张类似的图片不停的切换,当切换速度达到一定值时,?
?* 我们的视觉就会出现残影,残影的出现保证了视觉上变化的连续性,这时候图片的切换看在我们眼中就跟真实的一样了。?
?* 想使用逐帧动画:?
?* 第一步:需要在res/drawable文件夹下新建一个xml文件,该文件详细定义了动画播放时所用的图片、切换每张图片?
?*??????? 所用的时间、是否为连续播放等等.
?* 第二步:在代码中,将该动画布局文件,赋值给特定的图片展示控件,如本例子中的ImageView。?
?* 第三步:通过imageView.getBackGround()获取相应的AnimationDrawable对象,然后通过该对象的方法进行控制动画?
?* @author chenzheng_java?
?*?
?*/?
public class Animation1Activity extends Activity {??
??? ImageView imageView ;??
??? @Override?
??? public void onCreate(Bundle savedInstanceState) {??
??????? super.onCreate(savedInstanceState);??
??????? setContentView(R.layout.animation1);??
??????????
??????? imageView = (ImageView) findViewById(R.id.imageView_animation1);??
??????? imageView.setBackgroundResource(R.drawable.animation1_drawable);??
??????????
??? }??
??????
??????
??? public void myClickHandler(View targetButton){??
??????? // 获取AnimationDrawable对象??
??????? AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getBackground();??
??????????
??????? // 动画是否正在运行??
??????? if(animationDrawable.isRunning()){??
??????????? //停止动画播放??
??????????? animationDrawable.stop();??
??????? }??
??????? else{??
??????????? //开始或者继续动画播放??
??????????? animationDrawable.start();??
??????? }??
??????????
??????????
??? }??
}??
?
animation1.xml文件:
+ expand sourceview plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"?
??? android:layout_width="match_parent" android:layout_height="match_parent"?
??? android:orientation="vertical">?
??? <Button? android:id="@+id/button_animation1" android:text="动画开始"?
??????? android:layout_gravity="center_horizontal" android:layout_width="wrap_content"?
??????? android:layout_height="wrap_content" android:onClick="myClickHandler"></Button>?
??? <ImageView android:id="@+id/imageView_animation1"?
??????? android:layout_width="fill_parent"???
??????? android:layout_height="wrap_content" android:layout_weight="1"></ImageView>?
</LinearLayout>??
?
存放动画文件的xml文件:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>?
<!--???
??? 根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画??
??? 根标签下,通过item标签对动画中的每一个图片进行声明??
??? android:duration 表示展示所用的该图片的时间长度??
?-->?
<animation-list?
? xmlns:android="http://schemas.android.com/apk/res/android"?
? android:oneshot="false"?
? >?
??? <item android:drawable="@drawable/a1" android:duration="50"></item>?
??? <item android:drawable="@drawable/a2" android:duration="50"></item>?
??? <item android:drawable="@drawable/a3" android:duration="50"></item>?
??? <item android:drawable="@drawable/a4" android:duration="50"></item>?
??? <item android:drawable="@drawable/a5" android:duration="50"></item>?
??? <item android:drawable="@drawable/a6" android:duration="50"></item>?
</animation-list>?
除此之外:在AnimationDrawable中,我们还可以看到如下的几个重要方法:
setOneShot(boolean flag) 和在配置文件中进行配置一样,可以设置动画是否播放一次,false为连续播放;
addFrame (Drawable frame, int duration) 动态的添加一个图片进入该动画中
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenzheng_java/archive/2011/03/24/6273954.aspx
================================================================
//实例化AnimationDrawable对象
frameAnimation = new AnimationDrawable();
/*装载资源*/
for(int i = 1; i <= 15; i++){
int id = getResources().getIdentifier("a" + i, "drawable", mContext.getPackageName());
Drawable mBitAnimation = getResources().getDrawable(id);
//参数mBitAnimation是该帧的图片
//参数500是该帧显示的时间,按毫秒计算
frameAnimation.addFrame(mBitAnimation, 500);
}
/*上边用到了Resources的getIdentifier方法 方法返回一个资源的唯一标识符,如果没有这个资源就返回0
* 0不是有效的标识符,在说说这个方法几个参数的含义
* 第一个 就是我们的资源名称了。
* 第二个 就是我们要去哪里找我们的资源 我们的图片在drawable 下 所以为drawable
* 第三个 我们用了Context的getPackageName返回应用程序的包名
* */
//设置播放模式是否循环播放,false表示循环,true表示不循环
frameAnimation.setOneShot(false);
//开始播放动画
frameAnimation.start();