国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android使用Handler實(shí)現(xiàn)打地鼠游戲

2019-10-22 18:09:56
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了Android使用Handler實(shí)現(xiàn)打地鼠的具體代碼,供大家參考,具體內(nèi)容如下

1.實(shí)現(xiàn)效果

如下圖所示: 

Android,Handler,打地鼠,游戲

2.代碼實(shí)現(xiàn)

新建一個(gè)名為DiglettDemo的項(xiàng)目,activity_main.xml代碼如下:

<?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"  tools:context=".MainActivity">  <ImageView    android:id="@+id/imageView"    android:layout_width="80dp"    android:layout_height="80dp"    android:src="@drawable/diglett"    android:visibility="gone" />  <Button    android:id="@+id/button"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignParentBottom="true"    android:layout_centerHorizontal="true"    android:layout_marginBottom="45dp"    android:text="點(diǎn)擊開始" />  <TextView    android:id="@+id/textView"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignParentTop="true"    android:layout_centerHorizontal="true"    android:layout_marginTop="20dp"    android:textColor="#ff0000"    android:textSize="20sp" /></RelativeLayout>

MainActivity.class代碼如下:

 

public class MainActivity extends AppCompatActivity implements View.OnClickListener, View.OnTouchListener {  public static final int CODE = 999;  public static final int RANDOM_NUMBER = 500;  private TextView mTextView;  private Button mButton;  private ImageView mImageView;  /**   * 定義地鼠的位置   */  public int[][] mPosition = new int[][]{      {342, 180}, {432, 880}, {521, 256}, {429, 780},      {456, 976}, {145, 665}, {123, 678}, {564, 567},  };  private int mTotalCount, mSuccessCount = 0;  public static final int MAX_COUNT = 10;  private MyHandler mMyHandler = new MyHandler(this);  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    initView();  }  private void initView() {    mTextView = findViewById(R.id.textView);    mButton = findViewById(R.id.button);    mImageView = findViewById(R.id.imageView);    mButton.setOnClickListener(this);    mImageView.setOnTouchListener(this);  }  @Override  public void onClick(View v) {    switch (v.getId()) {      case R.id.button:        start();        break;    }  }  private void start() {    mTextView.setText("游戲開始了!");    mButton.setText("游戲中...");    mButton.setEnabled(false);    //發(fā)送消息    next(RANDOM_NUMBER);  }  private void next(int delayTime) {    //產(chǎn)生一個(gè)0——數(shù)組長(zhǎng)度的隨機(jī)數(shù)    int positon = new Random().nextInt(mPosition.length);    Message message = Message.obtain();    message.what = CODE;    message.arg1 = positon;    mMyHandler.sendMessageDelayed(message, delayTime);    //每發(fā)送一次消息,總數(shù)就加一    mTotalCount++;  }  /**   * 圖片點(diǎn)擊事件   * @param v   * @param event   * @return   */  @Override  public boolean onTouch(View v, MotionEvent event) {    //每次觸碰到地鼠,則地鼠消失,打到地鼠的數(shù)量加一    v.setVisibility(View.GONE);    mSuccessCount++;    mTextView.setText("打到了" + mSuccessCount + "只,共" + MAX_COUNT + "只");    return false;  }  public static class MyHandler extends Handler {    private final WeakReference<MainActivity> mWeakReference;    public MyHandler(MainActivity activity) {      this.mWeakReference = new WeakReference<>(activity);    }    @Override    public void handleMessage(Message msg) {      MainActivity activity = mWeakReference.get();      super.handleMessage(msg);      switch (msg.what) {        case CODE:          if (activity.mTotalCount > MAX_COUNT) {            //游戲結(jié)束,初始化游戲            activity.clear();            Toast.makeText(activity, "地鼠打完了!", Toast.LENGTH_SHORT).show();            return;          } else {            int position = msg.arg1;            activity.mImageView.setX(activity.mPosition[position][0]);            activity.mImageView.setY(activity.mPosition[position][1]);            activity.mImageView.setVisibility(View.VISIBLE);            //在隨機(jī)位置上顯示地鼠之后,再次發(fā)送消息            int randomTime = new Random().nextInt(RANDOM_NUMBER) + RANDOM_NUMBER;            activity.next(randomTime);          }          break;      }    }  }  /**   * 游戲結(jié)束,初始化游戲   */  private void clear() {    mTotalCount = 0;    mSuccessCount = 0;    mImageView.setVisibility(View.GONE);    mButton.setText("點(diǎn)擊開始");    mButton.setEnabled(true);  }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 台湾省| 宜兰县| 韶关市| 彩票| 棋牌| 广饶县| 镶黄旗| 陆川县| 寿光市| 大理市| 保德县| 甘南县| 建瓯市| 岚皋县| 抚顺县| 宁国市| 师宗县| 丰顺县| 汶上县| 许昌市| 泰兴市| 大余县| 花莲市| 西平县| 北流市| 吴忠市| 淮安市| 合川市| 女性| 阳谷县| 绥江县| 碌曲县| 文安县| 张家港市| 周口市| 嘉黎县| 封丘县| 万全县| 珠海市| 庆阳市| 和林格尔县|