Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android學習日記06--游戲開發之View框架

android學習日記06--游戲開發之View框架

編輯:關於Android編程

android 游戲開發 三個重要的類:View視圖、Canvas畫布、Paint畫筆 android 游戲開發常用三種視圖 View SurfaceView --主要用於2D GLSurfaceView --主要用於3D       View框架實例   在View上 寫"GameView" ,按方向鍵 上下左右會隨之移動,觸摸屏幕、拖動也會移到相應位置。   新建MyView類 繼承View基類     復制代碼  1 package com.example.gameview;  2   3 import android.content.Context;  4 import android.graphics.Canvas;  5 import android.graphics.Color;  6 import android.graphics.Paint;  7 import android.view.KeyEvent;  8 import android.view.MotionEvent;  9 import android.view.View; 10  11 public class MyView extends View { 12  13     private int x=10,y=10; 14      15     public MyView(Context context) { 16         super(context); 17         setFocusable(true);//設置當前view為焦點操作 18         // TODO Auto-generated constructor stub 19     } 20      21     @Override 22     protected void onDraw(Canvas canvas) { 23         // TODO Auto-generated method stub 24         Paint paint = new Paint(); 25         paint.setColor(Color.BLACK); 26         canvas.drawText("GameView", x, y, paint); 27          28         super.onDraw(canvas); 29     } 30      31     @Override 32     public boolean onKeyDown(int keyCode, KeyEvent event) { 33         // TODO Auto-generated method stub 34         if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { 35             y-=2; 36         } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN){ 37             y+=2; 38         } else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT){ 39             x-=2; 40         } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){ 41             x+=2; 42         } 43          44         invalidate(); 45         //postInvalidate(); 46         return super.onKeyDown(keyCode, event); 47     } 48      49     @Override 50     public boolean onKeyUp(int keyCode, KeyEvent event) { 51         // TODO Auto-generated method stub 52         return super.onKeyUp(keyCode, event); 53     } 54      55     @Override 56     public boolean onTouchEvent(MotionEvent event) { 57         // TODO Auto-generated method stub 58         int tx = (int)event.getX(); 59         int ty = (int)event.getY(); 60         //玩家手指點擊屏幕的動作 61         if (event.getAction() == MotionEvent.ACTION_DOWN) { 62             x = tx; 63             y = ty; 64             //玩家手指抬起離開屏幕的動作 65         } else if (event.getAction() == MotionEvent.ACTION_MOVE) { 66             x = tx; 67             y = ty; 68             //玩家手指在屏幕上移動的動作 69         } else if (event.getAction() == MotionEvent.ACTION_UP) { 70             x = tx; 71             y = ty; 72         } 73 //        //獲取用戶手指觸屏的X坐標賦值與文本的X坐標 74 //        x = (int)event.getX(); 75 //        //獲取用戶手指觸屏的Y坐標賦值與文本的Y坐標 76 //        y = (int)event.getY(); 77 //        //重繪畫布 78          79         //重繪畫布 80         invalidate(); 81         //postInvalidate(); 82         return true; 83     } 84  85 } 復制代碼     需要特別注意的知識點如下:   1、Activity全屏顯示     1 // 去掉Activity標題欄 2 this.requestWindowFeature(Window.FEATURE_NO_TITLE); 3 // 去掉 電量、時間等狀態欄,全屏顯示 4 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 也可以在AndroidManifest裡設置     1 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 2、設置模擬器方向鍵生效 C:\Users\XX\.android\avd\XX.avd config.ini hw.dPad=no,把no改成yes,如下: hw.dPad=yes 重啟模擬器即可 XX根據個人命名不同而不同   3、重寫onDraw方法     1 Paint paint = new Paint();// 畫筆類 2 paint.setColor(Color.BLACK);// 初始畫布為白色,設置畫筆為黑色 3 canvas.drawText("GameView", x, y, paint);// 坐標無論橫屏豎屏都是從右上角為 0,0點開始的 4  5 super.onDraw(canvas); 4、onKeyDown、onKeyUp、onTouchEvent分別表示 按鈕 按下、抬起、觸摸屏幕的事件 keyCode == KeyEvent.KEYCODE_DPAD_UP 表示 向上的方向鍵按下       5、設置當前view為焦點操作才能進行操作   在MyView 構造方法裡 setFocusable(true);   6、重畫 invalidate(); //postInvalidate(); 可在自己創建的線程 循環調用
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved