《手机游戏50例》第二个实例为将按键值显示在屏幕上,下面给出MainView.java的代码
package com.wjh.demon_2;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.inputmethodservice.Keyboard.Key;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
public class MainView extends View implements Runnable{
private boolean m_bRunning = false;
public int m_nKeyCode;
public String m_nKeyAction="";
private Handler handler = null;
public MainView(Context context) {
super(context);
// TODO Auto-generated constructor stub
setFocusable(true);
start();
}
public void start()
{
m_bRunning = true;
//更新
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
MainView.this.invalidate();
}
};
Thread thread = new Thread(this);
thread.start();
}
//线程启用方法
public void run()
{
while(m_bRunning)
{
//重回图形
handler.sendEmptyMessage(0);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void stop()
{
m_bRunning = false;
}
//画图方法
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//设置背景颜色
Paint backGround = new Paint();
backGround.setColor(Color.BLACK);
//清屏
canvas.drawRect(0, 0, getWidth(), getHeight(), backGround);
//设置画笔颜色
Paint cPaint = new Paint();
cPaint.setColor(Color.BLUE);
cPaint.setTextSize(20);
//输出按键的设备码
canvas.drawText("KeyCode:", 10, 20,cPaint);
canvas.drawText(""+m_nKeyCode,120,20,cPaint);
//输出按键的设备名
canvas.drawText("KeyAction:", 10, 80, cPaint);
canvas.drawText(m_nKeyAction, 120, 80, cPaint);
}
//获得按键输入
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
m_nKeyCode = keyCode;
switch(keyCode)
{
case KeyEvent.KEYCODE_DPAD_UP:
m_nKeyAction = "UP";
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
m_nKeyAction = "DOWN";
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
m_nKeyAction = "LEFT";
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
m_nKeyAction = "RIGHT";
break;
case KeyEvent.KEYCODE_DPAD_CENTER:
m_nKeyAction = "CENTER";
break;
default:
m_nKeyAction="NONE";
break;
}
return super.onKeyDown(keyCode, event);
}
}
代码包:
Demon_2.rar