【Android开发】动画范例1-士兵走起来!

简介:
利用学过的逐帧动画技术来在Android上实现让一个士兵上下左右行走的小例子。

具体效果如图


使用资源图片如图



具体实现:
首先将图片资源加入drawable文件夹下,然后在res文件夹下建立如下四个逐帧动画的配置XML文件,分别实现让士兵向上、下、左、右行走的动画播放:
anim_up.xml:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/anim12" android:duration="300"/>
    <item android:drawable="@drawable/anim11" android:duration="300"/>
	<item android:drawable="@drawable/anim13" android:duration="300"/>
</animation-list>

anim_left.xml:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/anim22" android:duration="300"/>
    <item android:drawable="@drawable/anim21" android:duration="300"/>
	<item android:drawable="@drawable/anim23" android:duration="300"/>
</animation-list>


anim_right.xml:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/anim32" android:duration="300"/>
    <item android:drawable="@drawable/anim31" android:duration="300"/>
	<item android:drawable="@drawable/anim33" android:duration="300"/>
</animation-list>

anim_down.xml:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/anim42" android:duration="300"/>
    <item android:drawable="@drawable/anim41" android:duration="300"/>
	<item android:drawable="@drawable/anim43" android:duration="300"/>
</animation-list>

之后在layout中创建Activity的视图文件main.xml,其中利用线形布局,实现四周四个控制按钮,中间一个ImageView图片控件的效果,其中图片控件的背景默认为anim11:
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/linearLayout1"
    android:orientation="vertical"
    >
	<LinearLayout android:layout_width="match_parent"
    	android:layout_height="wrap_content"
    	android:paddingTop="30pt"
    	android:gravity="center"
    	android:orientation="horizontal">
	    <Button android:id="@+id/up"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="上"/>
	</LinearLayout>
	<LinearLayout android:layout_width="match_parent"
    	android:layout_height="100pt"
    	android:gravity="center"
    	android:orientation="horizontal">
	    <Button android:id="@+id/left"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="左"/>
	    <ImageView android:id="@+id/image"
	        android:padding="50pt"
	        android:background="@drawable/anim11"
	        android:layout_width="70pt"
	        android:layout_height="70pt"
	        android:text="上"/>
	    <Button android:id="@+id/right"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="右"/>
	</LinearLayout>
	<LinearLayout
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:gravity="center"
	    android:orientation="horizontal">
	    <Button android:id="@+id/down"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="下"/>
	</LinearLayout>
</LinearLayout>

之后,编写对应的Activity代码:
MainActivity:
package com.example.test;  
  
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
  
public class MainActivity extends Activity {  
	private Button up;
	private Button left;
	private Button right;
	private Button down;
	private ImageView imageview;
	private Handler mHandler;//声明一个用于处理消息的Handler类的对象
	private int flag=0;
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        
        up=(Button)findViewById(R.id.up);
        left=(Button)findViewById(R.id.left);
        right=(Button)findViewById(R.id.right);
        down=(Button)findViewById(R.id.down);
        imageview=(ImageView)findViewById(R.id.image);
        
       
        
        up.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				flag=1;
				 imageview.setBackgroundResource(R.anim.anim_up);
			        AnimationDrawable anim=(AnimationDrawable)imageview.getBackground();
					anim.start();
			}
		});
        
		 left.setOnClickListener(new OnClickListener() {
					
			@Override
			public void onClick(View arg0) {
				flag=2;
				 imageview.setBackgroundResource(R.anim.anim_left);
			        AnimationDrawable anim=(AnimationDrawable)imageview.getBackground();
					anim.start();
			}
		});
		 
		 right.setOnClickListener(new OnClickListener() {
				
			@Override
			public void onClick(View arg0) {
				flag=3;
				 imageview.setBackgroundResource(R.anim.anim_right);
			        AnimationDrawable anim=(AnimationDrawable)imageview.getBackground();
					anim.start();
			}
		});
		 
		 down.setOnClickListener(new OnClickListener() {
				
			@Override
			public void onClick(View arg0) {
				flag=4;
				 imageview.setBackgroundResource(R.anim.anim_down);
			        AnimationDrawable anim=(AnimationDrawable)imageview.getBackground();
					anim.start();
			}
		});


	}


}  

运行之后就可以看到运动的士兵啦,深不神奇?

转载请注明出处:http://blog.csdn.net/acmman/article/details/45700193

相关文章
|
7月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1395 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1007 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1107 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
876 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
7月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
381 0
|
8月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
1142 6
|
Android开发 开发者
Android SVG动画详细例子
本文详细讲解了在Android中利用SVG实现动画效果的方法,通过具体例子帮助开发者更好地理解和应用SVG动画。文章首先展示了动画的实现效果,接着回顾了之前的文章链接及常见问题(如属性名大小写错误)。核心内容包括:1) 使用阿里图库获取SVG图形;2) 借助工具将SVG转换为VectorDrawable;3) 为每个路径添加动画绑定属性;4) 创建动画文件并关联SVG;5) 在ImageView中引用动画文件;6) 在Activity中启动动画。文末还提供了完整的代码示例和源码下载链接,方便读者实践操作。
568 65
|
10月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
653 11
|
10月前
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
437 0
|
11月前
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
476 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡

热门文章

最新文章