天天看点

OGEngine 弹出软件盘手动输入文字处理

  1. import android.content.Context;
  2. import android.text.Editable;
  3. import android.text.InputFilter;
  4. import android.text.InputType;
  5. import android.text.TextWatcher;
  6. import android.text.method.PasswordTransformationMethod;
  7. import android.view.KeyEvent;
  8. import android.view.View;
  9. import android.view.View.OnKeyListener;
  10. import android.view.inputmethod.InputMethodManager;
  11. import android.widget.EditText;
  12. import com.orange.ui.activity.GameActivity;
  13. public class SoftInput {
  14.         private GameActivity activity;
  15.         private static OnSoftInputListener onSoftInputListener;
  16.         private EditText editText;
  17.         public SoftInput(GameActivity activity,
  18.                         OnSoftInputListener onSoftInputListener) {
  19.                 this.activity = activity;
  20.                 SoftInput.onSoftInputListener = onSoftInputListener;
  21.                 this.editText = activity.getEditText();
  22.                 this.editText.setOnKeyListener(onKeyListener1);
  23.         }
  24.         private OnKeyListener onKeyListener1 = new OnKeyListener() {
  25.                 @Override
  26.                 public boolean onKey(View v, int keyCode, KeyEvent event) {
  27.                         // TODO Auto-generated method stub
  28.                         if (keyCode == KeyEvent.KEYCODE_BACK) {
  29.                                 editText.setOnKeyListener(onKeyListener2);
  30.                                 return true;
  31.                         }
  32.                         return false;
  33.                 }
  34.         };
  35.         private OnKeyListener onKeyListener2 = new OnKeyListener() {
  36.         public void setEditViewStyle(boolean number, boolean password,
  37.                         int maxTextLength) {
  38.                 if (this.editText != null) {
  39.                         if (maxTextLength > 0) {
  40.                                 this.editText
  41.                                                 .setFilters(new InputFilter[] { new InputFilter.LengthFilter(
  42.                                                                 maxTextLength) });
  43.                         } else {
  44.                                 this.editText.setFilters(new InputFilter[] {});
  45.                         if (number) {
  46.                                 this.editText.setInputType(InputType.TYPE_CLASS_NUMBER);
  47.                                 this.editText.setInputType(InputType.TYPE_CLASS_TEXT);
  48.                         if (password) {
  49.                                                 .setTransformationMethod(PasswordTransformationMethod
  50.                                                                 .getInstance());
  51.                                 this.editText.setTransformationMethod(null);
  52.         public void show(View parent, String hint, String text) {
  53.                         if (hint != null) {
  54.                                 this.editText.setHint(hint);
  55.                                 this.editText.setHint("");
  56.                         if (text != null) {
  57.                                 this.editText.setText(text);
  58.                                 this.editText.setText("");
  59.                         Editable editable = this.editText.getText();
  60.                         if (editable != null) {
  61.                                 this.editText.setSelection(editable.toString().length());
  62.                         this.editText.removeTextChangedListener(mTextWatcher);
  63.                         this.editText.addTextChangedListener(mTextWatcher);
  64.                         final InputMethodManager m = (InputMethodManager) this.activity
  65.                                         .getSystemService(Context.INPUT_METHOD_SERVICE);
  66.                         m.showSoftInput(this.editText, 0);
  67.         private static TextWatcher mTextWatcher = new TextWatcher() {
  68.                 public void onTextChanged(CharSequence s, int start, int before,
  69.                                 int count) {
  70.                 public void beforeTextChanged(CharSequence s, int start, int count,
  71.                                 int after) {
  72.                 public void afterTextChanged(Editable s) {
  73.                         if (onSoftInputListener != null) {
  74.                                 onSoftInputListener.onTextChanged(s.toString());
  75.         /**
  76.          * 弹出软键盘
  77.          * 
  78.          * @param activity
  79.          *            不解释
  80.          * @param hint
  81.          *            如果没有,输入null
  82.          * @param text
  83.          * @param number
  84.          *            是否数字
  85.          * @param password
  86.          *            是否密码
  87.          * @param maxTextLength
  88.          *            最大长度,如果不限制,输入0
  89.          * @param onSoftInputListener
  90.          *            返回接口
  91.          */
  92.         public static void showSoftInput(GameActivity activity, String hint,
  93.                         String text, boolean number, boolean password, int maxTextLength,
  94.                 SoftInput softInput = new SoftInput(activity, onSoftInputListener);
  95.                 softInput.setEditViewStyle(number, password, maxTextLength);
  96.                 softInput.show(activity.getWindow().getDecorView(), hint, text);
  97.         public interface OnSoftInputListener {
  98.                 /**
  99.                  * 编辑框内容改变
  100.                  * 
  101.                  * @param newContent
  102.                  *            新内容
  103.                  */
  104.                 public void onTextChanged(String newContent);
  105. }

复制代码

使用时直接调用 SoftInput.showSoftInput() 方法弹出软件盘,在 回调 onSoftInputListener 监听输入结果。

http://www.eoeandroid.com/forum-863-1.html