テクパー2020 テクニカルヘルパー |
アンドロイドアプリ開発 |
◆ キーイベントの取得 ・ キー入力のイベントを取得(処理)します |
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. |