【Android游戏特效】项目实战
2015-07-28 01:40
603 查看
今天带来的是游戏特技,放个大招,让大家感受一下Android也是可以酷炫地!!!
动态效果图
特效图片:z1.png~z23.png(一共23张图,可随意增删,看特效需要)
说明: 放于drawable-hdpi目录下
逻辑技术:Timer(定时器类),TimerTask(定时任务类),Handler(收发消息类),Drawable(位图类)
数组,for循环,方法,代码获取图片资源Id
注册文件:AndroidMenifest.xml(默认就好,没有改动这里)
其他布局或资源文件也没有改动,默认就好。
主界面类MainActivity.java
项目效果图
静态效果图动态效果图
项目结构
项目图片资源
背景图片:main_bg.png特效图片:z1.png~z23.png(一共23张图,可随意增删,看特效需要)
说明: 放于drawable-hdpi目录下
技术预告
界面技术:FrameLayout(帧布局或层叠布局)逻辑技术:Timer(定时器类),TimerTask(定时任务类),Handler(收发消息类),Drawable(位图类)
数组,for循环,方法,代码获取图片资源Id
界面开发
主界面布局文件:layout/activity_main.xml<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/main_bg" > </FrameLayout>
注册文件:AndroidMenifest.xml(默认就好,没有改动这里)
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.kedi.teji" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.kedi.teji.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
其他布局或资源文件也没有改动,默认就好。
功能开发
包:com.kedi.teji主界面类MainActivity.java
package com.kedi.teji; import java.util.Timer; import java.util.TimerTask; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.view.Gravity; import android.widget.FrameLayout; /** * 主界面类 * * @author 科弟 * */ public class MainActivity extends Activity { // 帧布局变量 private FrameLayout mCantainerFl; // 定义消息标识 private static final int WHAT = 0x001; // 定义存放23张图片的图片对象 private Drawable[] pics = new Drawable[23]; // Handler的作用: 发送和接收消息的,可在HandleMessage接收消息并做相应的处理 private Timer timer;// 定时器类 @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { // 定义i变量,以方便循环显示图片, int i = 0; public void handleMessage(android.os.Message msg) { // 判断是否为本应用发送的消息 if (msg.what == WHAT) { i++; teji(i % 23); } super.handleMessage(msg); }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mCantainerFl = (FrameLayout) this.findViewById(R.id.container); //初始化图片对象数组 initPics(); // 定时器类 timer = new Timer(); // 任务 TimerTask task = new TimerTask() { @Override public void run() { // 发送消息 mHandler.sendEmptyMessage(WHAT); } }; // 每170毫秒执行一次发送消息的任务 timer.schedule(task, 0,170); } /** * 初始化图片对象数组 */ private void initPics() { for (int i = 0; i < pics.length; i++) { //获得图片的ID int drawableId = getResources().getIdentifier("z" + (i + 1), "drawable", "com.kedi.teji"); //获得指定Id的图片对象,并存放到数组中 pics[i] = getResources().getDrawable(drawableId); } } /** * 为FrameLayout设置前景图片以及前景图片要显示的位置(居中) * * @param i */ private void teji(int i) { mCantainerFl.setForeground(pics[i]); mCantainerFl.setForegroundGravity(Gravity.CENTER); } @Override protected void onPause() { super.onPause(); //界面快要关闭时取消定时器,要不然程序退出后次定时器的任务还在执行 timer.cancel(); } }
下载地址
下载地址: http://download.csdn.net/detail/kedi_study/8938293
相关文章推荐
- android Github-Client(ANDROID)开源之旅(三) ------ 巧用ViewPagerIndicator
- Android应用闪屏的制作,手把手教
- android 安卓开发黄金搭档:android-studio+Genymotion模拟器
- android:layout_weight 属性详解
- Android
- 【Android 多语言切换简单实例分享】
- Android5.0+(CoordinatorLayout)
- Android5.0+(CollapsingToolbarLayout)
- android5.0+(NavigationView)
- android-Fragment在生命周期做了什么?
- android-weight属性的理解
- android-当android studio更新时遇到Connetion failed。。。
- android ListActivity
- Android图像格式类及图像转换方法
- Android第一夜
- android studio 加载第三方类库
- 【Android Studio初探】快捷键大全与常用设置
- (转)Android 中的 Service 全面总结
- View类详解
- android 的TextView与EditText