摇骰子的动画制作

这篇博客介绍了如何在Android平台上制作摇骰子的动画效果。通过简单的布局代码和图片资源,实现了骰子的显示和摇动过程。

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

首先是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#FFFFFF"
    tools:context="com.eascs.seizi.MainActivity">

    <ImageView
        android:id="@+id/iv"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_centerInParent="true"
        />

    <ImageView
        android:id="@+id/result"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_centerInParent="true"
        android:background="@mipmap/one"/>

    <Button
        android:id="@+id/btn_start"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="start"/>

</RelativeLayout>

然后为了方便全部代码都写在一个MainActivity里面了

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.widget.Button;
import android.widget.ImageView;

import java.util.Random;
import java.util.TimerTask;

public class MainActivity extends Activity implements View.OnClickListener {

    private ImageView iv, result;
    private int[] dis = {R.mipmap.move_1, R.mipmap.move_2, R.mipmap.move_3};
    private AnimationDrawable ad;
    private Button start;
    private Handler mHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv = (ImageView) findViewById(R.id.iv);
        start = (Button) findViewById(R.id.btn_start);
        result = (ImageView) findViewById(R.id.result);
        start.setOnClickListener(this);

        mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                ad.stop();
                int r = new Random().nextInt(6);
                result.setVisibility(View.VISIBLE);
                int res = -1;
                switch (r) {
                    case 0:
                        res = R.mipmap.one;
                        break;
                    case 1:
                        res = R.mipmap.two;
                        break;
                    case 2:
                        res = R.mipmap.three;
                        break;
                    case 3:
                        res = R.mipmap.four;
                        break;
                    case 4:
                        res = R.mipmap.five;
                        break;
                    case 5:
                        res = R.mipmap.six;
                        break;
                }
                if (r != -1) {
                    result.setBackgroundDrawable(getResources().getDrawable(res));
                }
            }
        };
    }

    private void start() {
        result.setVisibility(View.GONE);
        if (ad == null) {
            ad = new AnimationDrawable();
            for (int i = 0; i < 3; i++) {
                ad.addFrame(getResources().getDrawable(dis[i]), 150);
            }
            ad.setOneShot(false);
            iv.setBackgroundDrawable(ad);
        }
        if (ad.isRunning()) {
            return;
        }
        ad.start();
        java.util.Timer timer = new java.util.Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
               mHandler.sendEmptyMessage(0);
            }
        }, 1000);
    }

    @Override
    public void onClick(View v) {
        start();
    }
}

代码很简单,一看就懂,我就不多解释了。

图片资源 http://download.youkuaiyun.com/detail/zhoudailiang/9345901

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值