Android Tutorial - User Event : Key
Key event listener
package app.test; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; public class Test extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); ListView myListView = (ListView) findViewById(R.id.myListView); final EditText myEditText = (EditText) findViewById(R.id.myEditText); final ArrayList<String> todoItems = new ArrayList<String>(); final ArrayAdapter<String> aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoItems); myListView.setAdapter(aa); myEditText.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { todoItems.add(0, myEditText.getText().toString()); myEditText.setText(""); aa.notifyDataSetChanged(); return true; } return false; } }); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/myEditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="New To Do Item" /> <ListView android:id="@+id/myListView" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
Soft keyboard get Char
//package com.mediaportal.ampdroid.utils; import android.view.KeyEvent; public class SoftkeyboardUtils { public static String getChar(int keyCode) { switch (keyCode) { case KeyEvent.KEYCODE_0: return "0"; case KeyEvent.KEYCODE_1: return "1"; case KeyEvent.KEYCODE_2: return "2"; case KeyEvent.KEYCODE_3: return "3"; case KeyEvent.KEYCODE_4: return "4"; case KeyEvent.KEYCODE_5: return "5"; case KeyEvent.KEYCODE_6: return "6"; case KeyEvent.KEYCODE_7: return "7"; case KeyEvent.KEYCODE_8: return "8"; case KeyEvent.KEYCODE_9: return "9"; case KeyEvent.KEYCODE_A: return "a"; case KeyEvent.KEYCODE_B: return "b"; case KeyEvent.KEYCODE_C: return "c"; case KeyEvent.KEYCODE_D: return "d"; case KeyEvent.KEYCODE_E: return "e"; case KeyEvent.KEYCODE_F: return "f"; case KeyEvent.KEYCODE_G: return "g"; case KeyEvent.KEYCODE_H: return "h"; case KeyEvent.KEYCODE_I: return "i"; case KeyEvent.KEYCODE_J: return "j"; case KeyEvent.KEYCODE_K: return "k"; case KeyEvent.KEYCODE_L: return "l"; case KeyEvent.KEYCODE_M: return "m"; case KeyEvent.KEYCODE_N: return "n"; case KeyEvent.KEYCODE_O: return "o"; case KeyEvent.KEYCODE_P: return "p"; case KeyEvent.KEYCODE_Q: return "q"; case KeyEvent.KEYCODE_R: return "r"; case KeyEvent.KEYCODE_S: return "s"; case KeyEvent.KEYCODE_T: return "t"; case KeyEvent.KEYCODE_U: return "u"; case KeyEvent.KEYCODE_V: return "v"; case KeyEvent.KEYCODE_W: return "w"; case KeyEvent.KEYCODE_X: return "x"; case KeyEvent.KEYCODE_Y: return "y"; case KeyEvent.KEYCODE_Z: return "z"; case KeyEvent.KEYCODE_DEL: return "{BKSP}"; case KeyEvent.KEYCODE_ENTER: case KeyEvent.KEYCODE_DPAD_CENTER: return "{ENTER}"; case KeyEvent.KEYCODE_SPACE: return " "; case KeyEvent.KEYCODE_DPAD_DOWN: return "{DOWN}"; case KeyEvent.KEYCODE_DPAD_UP: return "{UP}"; case KeyEvent.KEYCODE_DPAD_LEFT: return "{LEFT}"; case KeyEvent.KEYCODE_DPAD_RIGHT: return "{RIGHT}"; } return null; } }
show hide virtual keyboard
//package com.seirion.btetris.util; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.Context; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; public class BVirtualKeyboardUtil { private BVirtualKeyboardUtil() {} /** * show virtual keyboard. * @param activity the activity to show the keyboard. * @param input edit which gets focus */ public static void showInputMethod(final Activity activity, final EditText input){ TimerTask myTask = new TimerTask(){ public void run(){ InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(input, InputMethodManager.SHOW_IMPLICIT); } }; Timer timer = new Timer(); timer.schedule(myTask, 100); } /** * hide virtual keyboard. * @param activity the activity. */ public static void hideInputMethod(final Activity activity){ TimerTask myTask = new TimerTask(){ public void run(){ InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); } }; Timer timer = new Timer(); timer.schedule(myTask, 100); } }
has Physical Keyboard
import android.content.Context; import android.content.res.Configuration; class Main { public static boolean hasPhysicalKeyboard(Context context) { int keyboard = context.getResources().getConfiguration().keyboard; return keyboard == Configuration.KEYBOARD_QWERTY; } }
Show Keyboard
import android.content.Context; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; class Main { public static void showKeyboard(final Context context, final EditText input) { // Never explicitly open soft keyboard if physical keyboard is present input.post(new Runnable() { public void run() { InputMethodManager imm = (InputMethodManager) context .getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(input, InputMethodManager.SHOW_FORCED); } }); } }
Hide Keyboard
import android.content.Context; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; class Main { public static void hideKeyboard(Context context, EditText input) { InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(input.getWindowToken(), 0); } }
intrepret Direction Key
import android.view.KeyEvent; class KeyUtils { private KeyUtils() {} public static int intrepretDirection(int code) { switch(code) { case KeyEvent.KEYCODE_LEFT_BRACKET: case KeyEvent.KEYCODE_DPAD_LEFT: case KeyEvent.KEYCODE_1: case KeyEvent.KEYCODE_4: case KeyEvent.KEYCODE_7: return KeyEvent.KEYCODE_DPAD_LEFT; case KeyEvent.KEYCODE_RIGHT_BRACKET: case KeyEvent.KEYCODE_DPAD_RIGHT: case KeyEvent.KEYCODE_3: case KeyEvent.KEYCODE_6: case KeyEvent.KEYCODE_9: return KeyEvent.KEYCODE_DPAD_RIGHT; } return code; } }