Android实现微信摇骰子游戏

过年怎么可以不玩红包娱乐一下呢,微信里的摇骰子大小和石头剪刀布就是不错的游戏方式。

使用Java的Random函数很容易实现,以骰子为例:

1.骰子摇动的动画,使用animation-list帧动画实现
2.生成1~6的随机数,1 + new Random().nextInt(6)

以下是代码实现,文末提供图片资源下载:

package com.zms.dicedemo; 

import java.util.Random; 

import android.app.Activity;
import android.graphics.drawable.Drawable;
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 android.widget.Toast; 

public class MainActivity extends Activity { 

 private ImageView imageDice;
 private Button btnGo; 

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

  initialLayout();
 } 

 private void initialLayout() {
  imageDice = (ImageView) findViewById(R.id.imageDice); 

  btnGo = (Button) findViewById(R.id.btnGo);
  btnGo.setOnClickListener(new MyOnClickListener()); 

 } 

 class MyOnClickListener implements View.OnClickListener { 

  @Override
  public void onClick(View v) {
   switch (v.getId()) {
   case R.id.btnGo:
    imageDice.setImageDrawable(getResources().getDrawable(
      R.drawable.anim_dice));
    new Thread(new DiceThread()).start();
    break; 

   default:
    break;
   } 

  }
 } 

 public class DiceThread implements Runnable { 

  @Override
  public void run() {
   try {
    Thread.sleep(2000);
   } catch (InterruptedException e) {
    e.printStackTrace();
   } 

   Message messageDice = new Message();
   messageDice.what = 1;
   diceHandler.sendMessage(messageDice); 

  } 

 } 

 private void resetDiceImage() {
  int randomInt = 1 + new Random().nextInt(6); // 1~6
  Toast.makeText(MainActivity.this, getChineseByNumber(randomInt),
    Toast.LENGTH_SHORT).show();
  imageDice.setImageDrawable(getResources().getDrawable(
    getResources().getIdentifier("dice_" + randomInt, "drawable",
      getPackageName())));
 } 

 private String getChineseByNumber(int number) {
  switch (number) {
  case 1:
   return "一点小"; 

  case 2:
   return "二点小"; 

  case 3:
   return "三点小"; 

  case 4:
   return "四点大"; 

  case 5:
   return "五点大"; 

  case 6:
   return "六点大"; 

  default:
   return "";
  }
 } 

 final Handler diceHandler = new Handler() { 

  public void handleMessage(android.os.Message msg) {
   switch (msg.what) {
   case 1:
    resetDiceImage();
    break; 

   default:
    break;
   }
  } 

 };
} 

Random生成的虽然是伪随机数,但是在娱乐对安全性要求不高,还是可以使用的。

实现方式比较简单,以下是工程下载链接:Android微信摇骰子

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android控件之ToggleButton的使用方法

    ToggleButton的状态只能是选中和未选中,并且需要为不同的状态设置不同的显示文本. 以下案例为ToggleButton的用法 目录结构 main.xml布局文件 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    androi

  • Android ToggleButton 详解及实例代码

    Android ToggleButton 详解 在Android的开发过程中,对于ToggleButton的使用频率也是相当的高的,下面我就来说一下,这个组件的两种使用方式. 第一种是简单的使用,利用Toast的方式弹出提示语句 需要注意的是要想自定义ToggleButton的显示的内容,就需要设置其TextOn和TextOff的内容. <ToggleButton android:id="@+id/toggleButton1" android:layout_width="

  • Android自定义View实现随手势滑动控件

    本文控件为大家分享了Android随手势滑动控件的具体代码,供大家参考,具体内容如下 1.新建自定义控件类:MyView public class MyView extends Button{ //记录上次滑动后的坐标值 private int lastX; private int lastY; public MyView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyV

  • Android实现计步进度的环形Progress

    项目中需要实现一个计步进度的环形Progress,当未达到设定目标时,绘制特定弧度((已实现步数/目标步数)*360°)的圆弧.当已实现步数大于等于目标步数时绘制整个360°圆环. 效果图: 代码实现: 设置已完成步数和目标步数: public void setStep(int stepDone, int stepGoal) { this.stepDone = stepDone; this.stepGoal = stepGoal; int progess = (stepDone * 100) /

  • Android中Okhttp3实现上传多张图片同时传递参数

    之前上传图片都是直接将图片转化为io流传给服务器,没有用框架传图片. 最近做项目,打算换个方法上传图片. Android发展到现在,Okhttp显得越来越重要,所以,这次我选择用Okhttp上传图片. Okhttp目前已经更新到Okhttp3版本了,用法跟之前相比,也有一些差别.在网上找了很多资料, 并和java后台同事反复调试,终于成功上传多张图片,同时传递一些键值对参数. 以下是我对该过程的封装: private static final MediaType MEDIA_TYPE_PNG =

  • android实现定位与目的地的导航示例代码

    今天无意中看到技术大神利用百度地图定位并实现目的地导航的Demo.觉得很不错,就转载过来一起分享,下面我们看实现效果:       进入后首先会得到当前位置,在地图上显示出来,在输入框中输入目的地后,就会在地图上出现最佳线路,我这里设置的是距离最小的驾车线路,另外还有公交线路.步行线路,在代码中都有详细注释.另外,在控制台还输出了线路上每一个节点的信息以及起始位置和目的地的距离,信息显示的是在当前节点的导航信息.如下图: 接下来就看如何实现了,首先,注册百度开发者账号,并进入百度地图API查看相

  • Android之侧滑菜单DrawerLayout的使用介绍

    在android support.v4 中有一个抽屉视图控件DrawerLayout.使用这个控件,可以生成通过在屏幕上水平滑动打开或者关闭菜单,能给用户一个不错的体验效果. DrawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏,主内容区的部分可以随着菜单的点击而变化.DrawerLayout其实是一个控件,跟LinearLayout差不多,直接使用即可. DrawerLayout属性 1.drawerPosition:指定 drawer 将从屏幕的一侧滑动. 2

  • Android之RecyclerView轻松实现下拉刷新和加载更多示例

    今天研究了下RecyclerView的滑动事件,特别是下拉刷新和加载更多事件,在现在几乎所有的APP显示数据列表时都用到了.自定义RecyclerView下拉刷新和加载更多听上去很复杂,实际上并不难,只要是对滑动事件的监听和处理. 一.自定义RecyclerView实现下拉刷新和加载更多 1.如何判断RecyclerView是在上滑还是下滑 在RecyclerView的OnScrollListener滑动事件监听中有个好用的方法,就是onScrolled(RecyclerView recycle

  • Android源码解析之属性动画详解

    前言 大家在日常开发中离不开动画,属性动画更为强大,我们不仅要知道如何使用,更要知道他的原理.这样,才能得心应手.那么,今天,就从最简单的来说,了解下属性动画的原理. ObjectAnimator .ofInt(mView,"width",100,500) .setDuration(1000) .start(); ObjectAnimator#ofInt 以这个为例,代码如下. public static ObjectAnimator ofInt(Object target, Stri

  • Android自定义谷歌风格ProgressBar

    本文实例为大家分享了谷歌风格ProgressBar的具体代码,供大家参考,具体内容如下 具体代码 package zms.demo.colorprogress; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.draw

  • android基本控件ToggleButton&Switch使用指南

    ToggleButton(开关按钮)和Switch(开关)讲解: 一.核心属性讲解: (1)ToggleButton textOn:按钮被选中的时候文字显示 textOff:按钮没有被选中的时候文字显示 ToggleButton的状态只能是选中和未选中,并且需要为不同的状态设置不同的显示文本. 以下案例为ToggleButton的用法 目录结构 main.xml布局文件 <?xml version="1.0" encoding="utf-8"?> <

随机推荐