【Android游戏特效】项目实战

本文详细介绍如何在Android中实现酷炫的特技效果,包括使用FrameLayout、Timer、TimerTask、Handler等技术,通过动态展示23张特效图片来展示Android的酷炫一面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天带来的是游戏特技,放个大招,让大家感受一下Android也是可以酷炫地!!!

项目效果图

静态效果图

主界面

动态效果图

主界面

项目结构

项目结构

项目图片资源

背景图片:main_bg.png
特效图片:z1.png~z23.png(一共23张图,可随意增删,看特效需要)
说明: 放于drawable-hdpi目录下

背景图片

z1.pngz2.png

z3.pngz4.png

z5.pngz6.png

z7.pngz8.png

z9.pngz10.pngz11.pngz12.png

z13.pngz14.pngz15.pngz16.png

z17.pngz18.pngz19.pngz20.png

z21.png

z22.png

z23.png

技术预告

界面技术: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.youkuaiyun.com/detail/kedi_study/8938293        
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值