android中的逐帧动画
16lz
2022-03-04
android与逐帧动画:
效果图:
当我们点击按钮时,该图片会不停的运动,当再次点击按钮时,会停止在当前的状态。
或者
一开始时,图片就会不停的运动.
activity代码:
package com.nj.test;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文件,该文件详细定义了动画播放时所用的图片、切换每张图片 * 所用的时间、是否为连续播放等等。(有些文章说,在res/anim文件夹下放置该文件,事实证明,会出错哦) * 第二步:在代码中,将该动画布局文件,赋值给特定的图片展示控件,如本例子中的ImageView。 * 第三步:通过imageView.getBackGround()获取相应的AnimationDrawable对象,然后通过该对象的方法进行控制动画 */public class ExamplesActivity extends Activity { private ImageView imageViewNumber,imageViewRole; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); imageViewNumber = (ImageView) findViewById(R.id.imageView_animation1); imageViewNumber.setBackgroundResource(R.drawable.number_animation_drawable); imageViewRole = (ImageView) findViewById(R.id.imageView_role); imageViewRole.setBackgroundResource(R.drawable.role_animation_drawable); } public void myClickHandler(View targetButton){ // 获取AnimationDrawable对象 AnimationDrawable animationDrawable = (AnimationDrawable)imageViewNumber.getBackground(); AnimationDrawable animationDrawable2 = (AnimationDrawable)imageViewRole.getBackground(); // 动画是否正在运行 if(animationDrawable.isRunning()){ //停止动画播放 animationDrawable.stop(); } else if(!animationDrawable.isRunning()){ //开始或者继续动画播放 animationDrawable.start(); } // 动画是否正在运行 if(animationDrawable2.isRunning()){ //停止动画播放 animationDrawable2.stop(); } else if(!animationDrawable2.isRunning()){ //开始或者继续动画播放 animationDrawable2.start(); } } /*** * 一开始就运动 */ public void onWindowFocusChanged(boolean hasFocus) { // 获取AnimationDrawable对象 AnimationDrawable animation1 = (AnimationDrawable)imageViewNumber.getBackground(); AnimationDrawable animation2 = (AnimationDrawable)imageViewRole.getBackground(); super.onWindowFocusChanged(hasFocus); if(hasFocus){ animation1.start(); animation2.start(); }else{ animation1.stop(); animation2.stop(); } }}
main.xml
<?xml version="1.0" encoding="utf-8"?>
number_animation_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
role_animation_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
资源下载地址:http://download.csdn.net/detail/niejing654092427/3880651
例子2:
第一步:先上图片素材,以下素材放到res/drawable目录下:
图片素材: |
|
|
|
|
|
|
文件名称: | wifi1.png | wif2.png | wifi3.png | wifi4.png | wifi5.png | wifi6.png |
第二步:上动画Animation-list帧布局文件,有2个,一个是按顺序显示动画,一个是倒序显示动画,文件存放在res/anim目录下
顺序显示动画文件:animation1.xml
<?xml version="1.0" encoding="utf-8"?> -
-
-
-
-
-
倒序显示动画文件:animation2.xml
<?xml version="1.0" encoding="utf-8"?> -
-
-
-
-
-
第三步:上布局文件,放在res/layout目录下,文件名activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
第四步:上Activity文件,文件名:MainActivity.java
package com.example.animation;import android.app.Activity;import android.graphics.drawable.AnimationDrawable;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity{ private ImageView animationIV; private Button buttonA, stopBtn, buttonC; private AnimationDrawable animationDrawable; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); animationIV = (ImageView) findViewById(R.id.animationIV); buttonA = (Button) findViewById(R.id.one_btn); stopBtn = (Button) findViewById(R.id.stop_btn); buttonC = (Button) findViewById(R.id.two_btn); buttonA.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub animationIV.setImageResource(R.drawable.animation1); animationDrawable = (AnimationDrawable) animationIV.getDrawable(); animationDrawable.start(); } }); stopBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub animationDrawable = (AnimationDrawable) animationIV.getDrawable(); animationDrawable.stop(); } }); buttonC.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub animationIV.setImageResource(R.drawable.animation2); animationDrawable = (AnimationDrawable) animationIV.getDrawable(); animationDrawable.start(); } }); }}
资源下载地址: http://download.csdn.net/detail/niejing654092427/5540011
更多相关文章
- Android(安卓)照片压缩
- android背景选择器selector用法汇总
- Android(安卓)动画
- android Animator详解
- 通过 http post 方式上传多张图片
- Android(安卓)gallery实现图片的左右循环旋转源码分享
- Android(安卓)图片加水印
- Android(安卓)控件之Gallery图片集
- Android(安卓)上传图片到服务器(多文件上传)