Android 模拟MotionEvent事件 触发输入法

android 输入法 layout button 文本编辑 encoding

关键词:MotionEvent,模拟按键,模拟点击事件,主动弹出输入法,弹出软键盘。

欢迎转载并说明转自:http://blog.csdn.net/aminfo/article/details/7887964

一、布局文件showime.xml

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical">
  6. <Buttonandroid:id="@+id/ButtonIME"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:padding="5px"
  10. android:text="弹出软键盘输入法"/>
  11. <EditTextandroid:id="@+id/EditTextIME"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:padding="5px"
  15. android:text="显示输入法键盘"/>
  16. </LinearLayout>


二、Activity,ShowIME.java文件源码:

[java] view plain copy
    1. packageorg.shuxiang.test;
    2. importandroid.app.Activity;
    3. importandroid.os.Bundle;
    4. importandroid.os.Handler;
    5. importandroid.os.Looper;
    6. importandroid.os.Message;
    7. importandroid.os.SystemClock;
    8. importandroid.view.MotionEvent;
    9. importandroid.view.View;
    10. importandroid.view.Window;
    11. importandroid.view.View.OnClickListener;
    12. importandroid.widget.Button;
    13. importandroid.widget.EditText;
    14. publicclassShowIMEextendsActivity
    15. {
    16. privateEditTextet;
    17. privateButtonbt;
    18. privatestaticHandlermessageHandler;
    19. @Override
    20. publicvoidonCreate(BundlesavedInstanceState){
    21. super.onCreate(savedInstanceState);
    22. requestWindowFeature(Window.FEATURE_NO_TITLE);
    23. setContentView(R.layout.showime);
    24. bt=(Button)findViewById(R.id.ButtonIME);
    25. bt.setOnClickListener(newOnClickListener()
    26. {
    27. @Override
    28. publicvoidonClick(Viewv){
    29. //TODOAuto-generatedmethodstub
    30. et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN,et.getLeft()+5,et.getTop()+5,0));
    31. et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),MotionEvent.ACTION_UP,et.getLeft()+5,et.getTop()+5,0));
    32. }
    33. });
    34. et=(EditText)findViewById(R.id.EditTextIME);
    35. Looperlooper=Looper.myLooper();
    36. messageHandler=newMessageHandler(looper);
    37. //此处的作用是延迟1秒,然后激活点击事件
    38. //欢迎转载并说明转自:http://blog.csdn.net/aminfo/article/details/7887964
    39. newThread()
    40. {
    41. @Override
    42. publicvoidrun()
    43. {
    44. synchronized(this)
    45. {
    46. try
    47. {
    48. wait(1000);//1秒
    49. }
    50. catch(InterruptedExceptione)
    51. {
    52. //TODOAuto-generatedcatchblock
    53. e.printStackTrace();
    54. }
    55. }
    56. Messagemessage=Message.obtain();
    57. message.what=1;
    58. messageHandler.sendMessage(message);
    59. }
    60. }.start();
    61. }
    62. classMessageHandlerextendsHandler
    63. {
    64. publicMessageHandler(Looperlooper)
    65. {
    66. super(looper);
    67. }
    68. @Override
    69. publicvoidhandleMessage(Messagemsg)
    70. {
    71. Bundlebundle=msg.getData();
    72. switch(msg.what)
    73. {
    74. case1:
    75. //模拟点击按钮
    76. bt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN,et.getLeft()+5,et.getTop()+5,0));
    77. bt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),MotionEvent.ACTION_UP,et.getLeft()+5,et.getTop()+5,0));
    78. //以下代码模拟点击文本编辑框
    79. //et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN,et.getLeft()+5,et.getTop()+5,0));
    80. //et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),MotionEvent.ACTION_UP,et.getLeft()+5,et.getTop()+5,0));
    81. break;
    82. default:
    83. break;
    84. }
    85. }
    86. }

更多相关文章

  1. android切换输入法工具类
  2. Android设置Edittext只能输入字母数字弹出英文键盘
  3. android fragment ontouch 事件
  4. Android之Input子系统事件分发流程
  5. Android 在xml布局配置文件中给Button按钮添加事件
  6. Android事件分发机制详解
  7. Android Input事件APP端流程分析
  8. android 禁止横屏时输入法全屏
  9. android noTouch 事件

随机推荐

  1. Android sdk manager 显示 “Done loadin
  2. 老版本ndk 下载链接
  3. Android 自定义弹出菜单和对话框
  4. 科幻世界iPhone、iPad、Android手机客户
  5. android启动一个应用工具类
  6. 你好,Android 11
  7. android jni 调用static native void met
  8. android sensorsimulator使用介绍
  9. Android(安卓)SDK 离线下载安装
  10. android 9.0 收到通知消息亮屏