亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android開發之多線程中實現利用自定義控件繪制小球并完成小球自動下落功能實例

2020-04-11 11:07:37
字體:
來源:轉載
供稿:網友

本文實例講述了Android開發之多線程中實現利用自定義控件繪制小球并完成小球自動下落功能的方法。分享給大家供大家參考,具體如下:

1、布局界面

<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" tools:context=".GameActivity" > <www.csdn.net.tetris.view.GameView  android:id="@+id/gameview"  android:layout_width="wrap_content"  android:layout_height="wrap_content"/> <Button  android:id="@+id/btn_left"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_alignLeft="@+id/gameview"  android:layout_alignParentBottom="true"  android:text="@string/btn_text" /> <Button  android:id="@+id/btn_right"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_alignBottom="@+id/gameview"  android:layout_centerHorizontal="true"  android:layout_alignParentBottom="true"  android:text="@string/btn_right" /></RelativeLayout>

2、封裝的一個繪制的圖的類

package www.csdn.net.tetris.domain;import www.csdn.net.tetris.view.GameView;public class Block { private int x=20,y=20; public GameView gameView; public Block(GameView gameView){  this.gameView=gameView; } //向左移動 public void moveLeft(){  x-=10;  gameView.invalidate(); } //向右移動 public void moveRight(){  x+=10;  gameView.invalidate(); } //下落方法  public void downLoad(){   y+=10;   gameView.invalidate();//重新繪制  } public int getX() {  return x; } public void setX(int x) {  this.x = x; } public int getY() {  return y; } public void setY(int y) {  this.y = y; }}

3、創建一個畫布和線程的操作

package www.csdn.net.tetris.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.View;import www.csdn.net.tetris.domain.Block;public class GameView extends View { public static Block block; public Handler handler; //定義方向 public static int dir=-1; //上下左右 public static final int DIRUP=1; public static final int DIRDOWN=2; public static final int DIRLEFT=3; public static final int DIRRIGHT=4; public GameView(Context context,AttributeSet attrs) {  super(context);  //創建俄羅斯方塊對象  this.block=new Block(this);  handler=new Handler(){   public void handleMessage(Message msg) {    super.handleMessage(msg);    switch (msg.what) {    case DIRLEFT:     GameView.block.moveLeft();     break;    case DIRRIGHT:     GameView.block.moveRight();     break;    default:     GameView.block.downLoad();     break;    }   }  };  //創建線程  new Thread (new Runnable(){   @Override   public void run() {    while(true){     try{      System.out.println("子線程名稱:::"+Thread.currentThread().getName());      //block.downLoad();      Thread.sleep(1000);      handler.sendEmptyMessage(dir);     }catch(Exception e){      e.printStackTrace();     }    }   }  }).start(); } @Override protected void onDraw(Canvas canvas) {  super.onDraw(canvas);  //設置了畫布的顏色  canvas.drawARGB(255, 0, 0, 255);  //設置一個畫筆  Paint paint=new Paint();  paint.setARGB(255, 255, 0, 0);  canvas.drawCircle(block.getX(), block.getY(), 10, paint); }}

4、在MainActivity中的操作

package com.example.tetris;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.Toast;import www.csdn.net.tetris.domain.Block;import www.csdn.net.tetris.view.GameView;public class GameActivity extends Activity {//聲明按鈕控件public Button btn_start;public Button btn_right;public Button btn_left;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_game);//獲取按鈕控件btn_start=(Button) findViewById(R.id.btn_start);btn_start.setOnClickListener(new MyOnClickListener());System.out.println("主線程:::"+Thread.currentThread().getName());}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}class MyOnClickListener implements View.OnClickListener{@Overridepublic void onClick(View v) {int id=v.getId();switch (id) {case R.id.btn_start://GameView gameView=new GameView(GameActivity.this,null);GameActivity.this.setContentView(R.layout.activity_layout);//獲取控件btn_right=(Button) findViewById(R.id.btn_right);btn_left=(Button) findViewById(R.id.btn_left);btn_left.setOnClickListener(new MyOnClickListener());btn_right.setOnClickListener(new MyOnClickListener());break;case R.id.btn_left:Toast.makeText(GameActivity.this, "向左移動", Toast.LENGTH_LONG).show();GameView.block.moveLeft();//GameView.dir=GameView.DIRLEFT;break;case R.id.btn_right:Toast.makeText(GameActivity.this, "向右移動", Toast.LENGTH_LONG).show();GameView.block.moveRight();//GameView.dir=GameView.DIRRIGHT;break;default:break;}}}}

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频精品va久久久久久| 亚洲国产精品小视频| 日韩成人激情影院| 91深夜福利视频| 欧美华人在线视频| 日韩av影院在线观看| 久久精品国产精品亚洲| 欧美激情一区二区三级高清视频| 狠狠躁夜夜躁久久躁别揉| 国产经典一区二区| 欧美肥老太性生活视频| 色多多国产成人永久免费网站| 日韩av网站大全| 久热爱精品视频线路一| 亚洲国产精品字幕| 国产a级全部精品| 日韩精品视频在线免费观看| 欧美xxxx18性欧美| 欧美精品激情视频| 国产精品视频导航| 欧美高清视频免费观看| 久久伊人91精品综合网站| 成人免费网站在线| 日本精品视频在线观看| 亚洲一级片在线看| 欧美成人在线免费视频| 日韩专区在线观看| 国产一区二区三区在线看| 亚洲第一网中文字幕| 亚洲精品国产品国语在线| 国产一级揄自揄精品视频| 亚洲精品久久久久中文字幕欢迎你| 国产香蕉一区二区三区在线视频| 亚洲国内精品视频| 亚洲人成电影网站色xx| 亚洲第一av网| 欧美一级在线播放| 中文字幕九色91在线| 国产原创欧美精品| 日韩在线观看视频免费| 91免费综合在线| 国产亚洲精品综合一区91| 欧美高清视频在线播放| 日韩高清电影免费观看完整| 国产综合在线观看视频| 亚洲免费高清视频| 亚洲跨种族黑人xxx| 亚洲最大成人免费视频| 成人免费看吃奶视频网站| 国产精品白丝jk喷水视频一区| 亚洲美女在线观看| 亚洲精品99久久久久中文字幕| 精品中文字幕在线| 国产精品爽爽爽爽爽爽在线观看| 国产精品极品美女在线观看免费| 日本高清久久天堂| 中文字幕精品影院| 91av网站在线播放| 91成人在线观看国产| 国产亚洲精品成人av久久ww| 欧美日韩另类字幕中文| 亚洲美女在线看| 久久国产精品久久久| 久久免费精品日本久久中文字幕| 欧美在线观看日本一区| 久久久久久久久久久91| 欧美肥臀大乳一区二区免费视频| 色综久久综合桃花网| 成人情趣片在线观看免费| 色综合老司机第九色激情| 国产一区二区三区久久精品| 国产精品三级在线| 成人中文字幕在线观看| 亚洲人成电影网站色www| 欧美最猛性xxxxx(亚洲精品)| 性欧美xxxx视频在线观看| 久久久久久久久久婷婷| 日韩hd视频在线观看| 国产成人jvid在线播放| 最近2019中文字幕一页二页| 全亚洲最色的网站在线观看| 欧美xxxx做受欧美| 亚洲人成毛片在线播放| 日韩av网站导航| 国产日韩在线看片| 亚洲r级在线观看| 国产成人综合精品| 91夜夜未满十八勿入爽爽影院| 国产精品一区二区三区在线播放| 国产精品高潮呻吟久久av无限| 欧美黑人xxx| 国产日本欧美一区二区三区在线| 亚洲va久久久噜噜噜| 亚洲aa中文字幕| 亚洲美女www午夜| 在线看日韩欧美| 亚洲缚视频在线观看| 日本sm极度另类视频| 国产精品xxxxx| 国产精品激情av在线播放| 国产精品视频久久久| 中日韩美女免费视频网站在线观看| 日韩国产在线看| 亚洲精品日韩av| 日韩高清不卡av| 91av在线精品| 中文字幕亚洲天堂| 国产精品xxx视频| 日韩中文字幕精品视频| 久操成人在线视频| 亚洲精品视频二区| 色偷偷91综合久久噜噜| 国产成人综合精品| 久久久久久午夜| 亚洲精品影视在线观看| 国产午夜精品一区二区三区| 亚洲97在线观看| 97久久精品视频| 欧美日韩亚洲视频一区| 国产999在线| 免费97视频在线精品国自产拍| 久久久精品一区二区| 精品magnet| 国产成人精品在线播放| 欧日韩不卡在线视频| 青青a在线精品免费观看| 成人免费视频97| 黄色精品一区二区| 欧美夫妻性生活视频| 亚洲精品乱码久久久久久按摩观| 亚洲欧洲成视频免费观看| 96pao国产成视频永久免费| 欧美成人精品三级在线观看| 久久久久久久久亚洲| 人人做人人澡人人爽欧美| 992tv成人免费影院| 久久久久久国产精品三级玉女聊斋| 国产999在线观看| 国内精品免费午夜毛片| 欧美日韩一区二区免费视频| 欧美电影第一页| 98精品国产自产在线观看| 亚洲国产精品成人一区二区| 国产日韩欧美在线视频观看| 中文字幕日本精品| 久久中国妇女中文字幕| 欧美激情按摩在线| 午夜欧美不卡精品aaaaa| 97超级碰在线看视频免费在线看| 2019国产精品自在线拍国产不卡| 福利视频一区二区| 91爱视频在线| 国产精品一区av| 在线观看视频亚洲| 热久久视久久精品18亚洲精品| 日韩在线观看视频免费| 国产精品第8页| 国产精品永久免费在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 日韩精品中文字幕有码专区| 欧美激情综合亚洲一二区| 亚洲欧美自拍一区| 成人综合国产精品| 欧美日韩综合视频网址|