|
テクパー2020 テクニカルヘルパー |
アンドロイドアプリ開発 |
|
◆ キーイベントの取得 ・ キー入力のイベントを取得(処理)します |
3.生成された 「 KeyActionView 」 を書き換え
package com.proto.keyaction;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.KeyEvent;
import android.view.View;
public class KeyActionView extends View {
private int keyCode=-999;// キーコード
private int cnt=0;// 描画カウント
// コンストラクタ
public KeyActionView(Context context) {
super(context);
// 背景色の指定 (android.graphics.Colorの定義)
setBackgroundColor(Color.WHITE);
// タッチモードのフォーカス指定(キー操作受け取り)
setFocusableInTouchMode(true);
}
// 描画
@Override
protected void onDraw(Canvas canvas) {
// 描画オブジェクトの生成
Paint paint=new Paint();
paint.setAntiAlias(true); // 文字の縁を滑らかに描く
paint.setTextSize(18); // 文字サイズ
paint.setColor(Color.MAGENTA); // 文字色
// 描画カウント
++cnt;
canvas.drawText("DrowCount="+cnt,0,20,paint);
// キー(移動、決定)チェック
String str="";
if (keyCode==KeyEvent.KEYCODE_DPAD_UP) str="DPAD_UP";
if (keyCode==KeyEvent.KEYCODE_DPAD_DOWN) str="DPAD_DOWN";
if (keyCode==KeyEvent.KEYCODE_DPAD_LEFT) str="DPAD_LEFT";
if (keyCode==KeyEvent.KEYCODE_DPAD_RIGHT) str="DPAD_RIGHT";
if (keyCode==KeyEvent.KEYCODE_DPAD_CENTER) str="DPAD_CENTER";
// キーコードの描画
canvas.drawText("KeyCode="+keyCode+" "+str,0,60,paint);
}
// キーダウンイベントの処理
@Override
public boolean onKeyDown(int keyCode,KeyEvent event) {
this.keyCode=keyCode;
return super.onKeyDown(keyCode,event);
}
// キーアップイベントの処理
/*@Override
public boolean onKeyUp(int keyCode,KeyEvent event) {
this.keyCode=-1;
return super.onKeyUp(keyCode,event);
}*/
}
|
package com.proto.keyaction;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
//import android.view.Window;
public class KeyAction extends Activity implements Runnable {
private KeyActionView keyactionView;
private Handler handler;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ウィンドウタイトルの非表示
// requestWindowFeature(Window.FEATURE_NO_TITLE);
// setContentView(R.layout.main); 書き換え
keyactionView=new KeyActionView(this);
setContentView(keyactionView);
}
// アプリの再開
@Override
public void onResume() {
super.onResume();
handler=new Handler();
handler.postDelayed(this,0);
}
// アプリの一時停止
@Override
public void onPause() {
super.onPause();
handler.removeCallbacks(this);
handler=null;
}
// 実行アプリ
public void run() {
keyactionView.invalidate();
if (handler!=null) handler.postDelayed(this,100);
}
}
|
public class KeyAction extends Activity implements Runnable {
implements Runnable の追加
|
android.view.View のViewクラスでタッチモードの指定 // タッチモードのフォーカス指定 (true:タッチモードの有効) public void setFocusableInTouchMode (boolean focusableInTouchMode) |
android.view.KeyEvent のKeyEventクラスのコンスタント // キーコード情報 KeyEvent.KEYCODE_XXXX |
android.view.View のViewクラスでイベントの処理 // キーダウンのイベント処理 public boolean onKeyDown (int keyCode, KeyEvent event) |
android.view.View のViewクラスでイベントの処理 // キーアップのイベント処理 public boolean onKeyUp (int keyCode, KeyEvent event) |
| Copyright (C) 2010 プログラミングのテクニックをあなたに!!(リトル・ヘルパー) All Rights Reserved. |