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.                 @Override

  37.                 public boolean onKey(View v, int keyCode, KeyEvent event) {

  38.                         // TODO Auto-generated method stub

  39.                         return false;

  40.                 }

  41.         };


  42.         public void setEditViewStyle(boolean number, boolean password,

  43.                         int maxTextLength) {

  44.                 if (this.editText != null) {

  45.                         if (maxTextLength > 0) {

  46.                                 this.editText

  47.                                                 .setFilters(new InputFilter[] { new InputFilter.LengthFilter(

  48.                                                                 maxTextLength) });

  49.                         } else {

  50.                                 this.editText.setFilters(new InputFilter[] {});

  51.                         }

  52.                         if (number) {

  53.                                 this.editText.setInputType(InputType.TYPE_CLASS_NUMBER);

  54.                         } else {

  55.                                 this.editText.setInputType(InputType.TYPE_CLASS_TEXT);

  56.                         }

  57.                         if (password) {

  58.                                 this.editText

  59.                                                 .setTransformationMethod(PasswordTransformationMethod

  60.                                                                 .getInstance());

  61.                         } else {

  62.                                 this.editText.setTransformationMethod(null);

  63.                         }

  64.                 }

  65.         }


  66.         public void show(View parent, String hint, String text) {

  67.                 if (this.editText != null) {

  68.                         if (hint != null) {

  69.                                 this.editText.setHint(hint);

  70.                         } else {

  71.                                 this.editText.setHint("");

  72.                         }

  73.                         if (text != null) {

  74.                                 this.editText.setText(text);

  75.                         } else {

  76.                                 this.editText.setText("");

  77.                         }

  78.                         Editable editable = this.editText.getText();

  79.                         if (editable != null) {

  80.                                 this.editText.setSelection(editable.toString().length());

  81.                         }

  82.                         this.editText.removeTextChangedListener(mTextWatcher);

  83.                         this.editText.addTextChangedListener(mTextWatcher);


  84.                         final InputMethodManager m = (InputMethodManager) this.activity

  85.                                         .getSystemService(Context.INPUT_METHOD_SERVICE);

  86.                         m.showSoftInput(this.editText, 0);

  87.                 }

  88.         }


  89.         private static TextWatcher mTextWatcher = new TextWatcher() {


  90.                 @Override

  91.                 public void onTextChanged(CharSequence s, int start, int before,

  92.                                 int count) {

  93.                         // TODO Auto-generated method stub

  94.                 }


  95.                 @Override

  96.                 public void beforeTextChanged(CharSequence s, int start, int count,

  97.                                 int after) {

  98.                         // TODO Auto-generated method stub


  99.                 }


  100.                 @Override

  101.                 public void afterTextChanged(Editable s) {

  102.                         // TODO Auto-generated method stub

  103.                         if (onSoftInputListener != null) {

  104.                                 onSoftInputListener.onTextChanged(s.toString());

  105.                         }

  106.                 }

  107.         };


  108.         /**

  109.          * 弹出软键盘

  110.          * 

  111.          * @param activity

  112.          *            不解释

  113.          * @param hint

  114.          *            如果没有,输入null

  115.          * @param text

  116.          *            如果没有,输入null

  117.          * @param number

  118.          *            是否数字

  119.          * @param password

  120.          *            是否密码

  121.          * @param maxTextLength

  122.          *            最大长度,如果不限制,输入0

  123.          * @param onSoftInputListener

  124.          *            返回接口

  125.          */

  126.         public static void showSoftInput(GameActivity activity, String hint,

  127.                         String text, boolean number, boolean password, int maxTextLength,

  128.                         OnSoftInputListener onSoftInputListener) {

  129.                 SoftInput softInput = new SoftInput(activity, onSoftInputListener);

  130.                 softInput.setEditViewStyle(number, password, maxTextLength);

  131.                 softInput.show(activity.getWindow().getDecorView(), hint, text);

  132.         }


  133.         public interface OnSoftInputListener {


  134.                 /**

  135.                  * 编辑框内容改变

  136.                  * 

  137.                  * @param newContent

  138.                  *            新内容

  139.                  */

  140.                 public void onTextChanged(String newContent);


  141.         }


  142. }


复制代码



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

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

www.ogengine.com



你可能感兴趣的:(安卓,程序,手游,手游开发,开发引擎)