最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)擲骰子效果

 更新時間:2020年05月21日 17:01:23   作者:不能及  
這篇文章主要為大家詳細介紹了Android實現(xiàn)擲骰子效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android實現(xiàn)擲骰子效果的具體代碼,供大家參考,具體內(nèi)容如下

利用handler接受子線程的消息完成骰子點數(shù)的不斷更替

演示

START:開始游戲
STOP:停止游戲
RECOVER:重置色子到初始狀態(tài)

代碼

package com.example.homeworkten;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

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 AppCompatActivity {
 private ImageView imageView1,imageView2,imageView3;
 private Button button1,button2,button3;
 private ImageView[] imageViews;
 private Handler handler;
 //子線程
 private Thread thread;
 //記錄每個色子的點數(shù)
 private int number[];
 //色子的總點數(shù)
 private int count;
 //volatile修飾符用來保證其它線程讀取的總是該變量的最新的值
 public volatile boolean isStop = false;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 number = new int[3];
 imageView1 = findViewById(R.id.imageView1);
 imageView2 = findViewById(R.id.imageView2);
 imageView3 = findViewById(R.id.imageView3);
 button1 = findViewById(R.id.button1);
 button2 = findViewById(R.id.button2);
 button3 = findViewById(R.id.button3);
 imageViews = new ImageView[]{imageView1,imageView2,imageView3};
 button1.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  //判斷線程是否存在
  if (thread != null&&isStop == true){
   isStop = false;
  }
  handler = new Handler(){
   @Override
   public void handleMessage(@NonNull Message msg) {
   super.handleMessage(msg);
   for(int i = 0;i < 3;i++) {
    switch (number[i]) {
    case 1:
     imageViews[i].setImageResource(R.drawable.t1);
     break;
    case 2:
     imageViews[i].setImageResource(R.drawable.t2);
     break;
    case 3:
     imageViews[i].setImageResource(R.drawable.t3);
     break;
    case 4:
     imageViews[i].setImageResource(R.drawable.t4);
     break;
    case 5:
     imageViews[i].setImageResource(R.drawable.t5);
     break;
    case 6:
     imageViews[i].setImageResource(R.drawable.t6);
     break;
    }
   }
   }
  };
  thread = new Thread(new Runnable() {
   @Override
   public void run() {
   while (!isStop) {
    Message message = handler.obtainMessage();
    //總點數(shù)歸零
    count = 0;
    for (int i = 0; i < 3; i++) {
    try {
     Thread.sleep(50);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
    //生成隨機數(shù)
    int random = (int) (Math.random() * 6 + 1);
    number[i] = random;
    count += random;
    }
    handler.sendMessage(message);
   }
   }
  });
  thread.start();
  }
 });
 //停止擲篩子
 button2.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  if(isStop == false) {
   isStop = true;
   try {
   //當(dāng)子線程執(zhí)行完以后才繼續(xù)執(zhí)行主線程
   thread.join();
   } catch (InterruptedException e) {
   e.printStackTrace();
   }
   //顯示擲出的點數(shù)
   Toast.makeText(MainActivity.this, "你擲的點數(shù)為" + count, Toast.LENGTH_SHORT).show();
  }else {
   Toast.makeText(MainActivity.this, "請點擊開始鍵進行擲色子", Toast.LENGTH_SHORT).show();
  }
  }
 });
 //將色子還原到初始狀態(tài)
 button3.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  if(isStop == true) {
   for (int i = 0; i < 3; i++) {
   imageViews[i].setImageResource(R.drawable.t1);
   }
  }else {
   Toast.makeText(MainActivity.this, "請先停止游戲,再重新開始", Toast.LENGTH_SHORT).show();
  }
  }
 });
 }
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity">

 <ImageView
 android:id="@+id/imageView1"
 android:layout_width="100dp"
 android:layout_height="80dp"
 android:layout_marginStart="10dp"
 android:layout_marginLeft="10dp"
 android:layout_marginTop="40dp"
 android:layout_marginEnd="10dp"
 android:layout_marginRight="10dp"
 app:layout_constraintEnd_toStartOf="@+id/imageView2"
 app:layout_constraintHorizontal_bias="0.482"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toTopOf="parent"
 app:srcCompat="@drawable/t1" />

 <ImageView
 android:id="@+id/imageView2"
 android:layout_width="100dp"
 android:layout_height="80dp"
 android:layout_marginStart="10dp"
 android:layout_marginLeft="10dp"
 android:layout_marginTop="40dp"
 android:layout_marginEnd="10dp"
 android:layout_marginRight="10dp"
 app:layout_constraintEnd_toStartOf="@+id/imageView3"
 app:layout_constraintStart_toEndOf="@+id/imageView1"
 app:layout_constraintTop_toTopOf="parent"
 app:srcCompat="@drawable/t1" />

 <Button
 android:id="@+id/button1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginStart="10dp"
 android:layout_marginLeft="10dp"
 android:layout_marginTop="40dp"
 android:layout_marginEnd="10dp"
 android:layout_marginRight="10dp"
 android:text="start"
 app:layout_constraintEnd_toStartOf="@+id/button2"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toBottomOf="@+id/imageView1" />

 <Button
 android:id="@+id/button2"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginStart="10dp"
 android:layout_marginLeft="10dp"
 android:layout_marginTop="40dp"
 android:layout_marginEnd="10dp"
 android:layout_marginRight="10dp"
 android:text="stop"
 app:layout_constraintEnd_toStartOf="@+id/button3"
 app:layout_constraintStart_toEndOf="@+id/button1"
 app:layout_constraintTop_toBottomOf="@+id/imageView2" />

 <Button
 android:id="@+id/button3"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginStart="10dp"
 android:layout_marginLeft="10dp"
 android:layout_marginTop="40dp"
 android:layout_marginEnd="10dp"
 android:layout_marginRight="10dp"
 android:text="recover"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintStart_toEndOf="@+id/button2"
 app:layout_constraintTop_toBottomOf="@+id/imageView3" />

 <ImageView
 android:id="@+id/imageView3"
 android:layout_width="100dp"
 android:layout_height="80dp"
 android:layout_marginStart="10dp"
 android:layout_marginLeft="10dp"
 android:layout_marginTop="40dp"
 android:layout_marginEnd="10dp"
 android:layout_marginRight="10dp"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintStart_toEndOf="@+id/imageView2"
 app:layout_constraintTop_toTopOf="parent"
 app:srcCompat="@drawable/t1" />

</androidx.constraintlayout.widget.ConstraintLayout>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android實現(xiàn)畫中畫功能(圖片)

    Android實現(xiàn)畫中畫功能(圖片)

    畫中畫是一種特殊類型的多窗口模式,最常用于視頻播放。這篇文章主要介紹了Android實現(xiàn)畫中畫功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • android中Fragment+RadioButton實現(xiàn)底部導(dǎo)航欄

    android中Fragment+RadioButton實現(xiàn)底部導(dǎo)航欄

    本篇文章主要介紹了android中Fragment+RadioButton實現(xiàn)底部導(dǎo)航欄,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Android獲取WiFi網(wǎng)絡(luò)列表的流程步驟

    Android獲取WiFi網(wǎng)絡(luò)列表的流程步驟

    在Android開發(fā)中,我們經(jīng)常需要獲取設(shè)備附近可用的Wi-Fi網(wǎng)絡(luò)列表,這對于開發(fā)需要基于Wi-Fi網(wǎng)絡(luò)進行功能或者與其他設(shè)備進行通信的應(yīng)用程序非常重要,本文將介紹如何在Android應(yīng)用程序中獲取Wi-Fi網(wǎng)絡(luò)列表,需要的朋友可以參考下
    2024-11-11
  • 如何讓安卓(Android)子控件超出父控件的范圍顯示

    如何讓安卓(Android)子控件超出父控件的范圍顯示

    下面我們來看一下關(guān)于安卓(Android)子控件超出父控件的范圍顯示出來的方法,希望這篇文章能夠幫助到各位安卓(Android)的開發(fā)者們,有碰到此問題的朋友可以進來看看哦。
    2016-08-08
  • Android?Notification使用教程詳解

    Android?Notification使用教程詳解

    這篇文章主要介紹了Android?Notification使用,通知的使用的內(nèi)容還是比較多的,此篇文章將會盡可能詳細的介紹Notification的內(nèi)容,需要的朋友可以參考下
    2022-07-07
  • Android之RecycleView實現(xiàn)指定范圍的拖動效果

    Android之RecycleView實現(xiàn)指定范圍的拖動效果

    這篇文章主要介紹了Android之RecycleView實現(xiàn)指定范圍的拖動效果的實例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Android編程之基于Log演示一個activity生命周期實例詳解

    Android編程之基于Log演示一個activity生命周期實例詳解

    這篇文章主要介紹了Android編程之基于Log演示一個activity生命周期,結(jié)合完整實例形式較為詳細的分析總結(jié)了Log演示activity生命周期的具體用法及Log的具體使用方法,需要的朋友可以參考下
    2015-12-12
  • Android Studio 3.0被調(diào)方法參數(shù)名提示的取消方法

    Android Studio 3.0被調(diào)方法參數(shù)名提示的取消方法

    這篇文章主要介紹了去掉android studio 3.0被調(diào)方法參數(shù)名提示的解決方法,在文章末尾給大家補充介紹了Android Studio 3.0 gradle提示太老的解決方法,非常不錯,需要的朋友可以參考下
    2017-11-11
  • Android自定義表格控件滿足人們對視覺的需求

    Android自定義表格控件滿足人們對視覺的需求

    隨著人們對視覺的需求,基本組件已無法滿足人們求新求異的要求,于是我們常常會自定義組件,用來實現(xiàn)更美觀的UI界面,接下來將介紹Android如何自定義表格控件,感興趣的朋友可以了解下,或許對你學(xué)習(xí)自定義控件有所幫助
    2013-02-02
  • Android中將View的內(nèi)容保存為圖像的簡單實例

    Android中將View的內(nèi)容保存為圖像的簡單實例

    這篇文章主要介紹了Android中將View的內(nèi)容保存為圖像的簡單實例,有需要的朋友可以參考一下
    2014-01-01

最新評論

资溪县| 墨竹工卡县| 浦北县| 平舆县| 嘉善县| 梁平县| 兰州市| 舒兰市| 台前县| 毕节市| 南皮县| 溧阳市| 大冶市| 梧州市| 城口县| 罗山县| 彭山县| 高州市| 永善县| 锦州市| 苏尼特右旗| 航空| 安达市| 姜堰市| 安阳市| 吴川市| 辽阳县| 聂拉木县| 周宁县| 肇州县| 廊坊市| 商城县| 锡林浩特市| 衡山县| 明溪县| 城市| 嵊州市| 南投市| 三亚市| 大安市| 莱西市|