Android(安卓)模拟MotionEvent事件 触发输入法
16lz
2022-04-03
一、布局文件showime.xml:
<?xml version="1.0" encoding="utf-8"?>
二、Activity,ShowIME.Java文件源码:
package org.shuxiang.test;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.os.SystemClock;import android.view.MotionEvent;import android.view.View;import android.view.Window;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class ShowIME extends Activity{private EditText et;private Button bt;private static Handler messageHandler; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.showime); bt = (Button) findViewById(R.id.ButtonIME); bt.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, et.getLeft()+5, et.getTop()+5, 0)); et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, et.getLeft()+5, et.getTop()+5, 0));} }); et = (EditText) findViewById(R.id.EditTextIME); Looper looper = Looper.myLooper(); messageHandler = new MessageHandler(looper); //此处的作用是延迟1秒,然后激活点击事件 //欢迎转载并说明转自:http://blog.csdn.net/aminfo/article/details/7887964 new Thread() { @Override public void run() { synchronized(this) { try { wait(1000); //1秒 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Message message = Message.obtain();message.what = 1; messageHandler.sendMessage(message); } }.start(); } class MessageHandler extends Handler { public MessageHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { Bundle bundle = msg.getData(); switch (msg.what) { case 1: //模拟点击按钮 bt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, et.getLeft()+5, et.getTop()+5, 0)); bt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, et.getLeft()+5, et.getTop()+5, 0)); //以下代码模拟点击文本编辑框 //et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, et.getLeft()+5, et.getTop()+5, 0)); //et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, et.getLeft()+5, et.getTop()+5, 0)); break; default: break; } } }}
更多相关文章
- android studio 使用getActionBar返回NULL
- android P虚拟按键点击位置加大的问题
- Android(安卓)隐藏底部导航栏和状态栏,动态调用导航栏,键盘收回时
- android中gridView中点击 item为选中状态
- Android输入框被键盘遮挡
- Android日语输入法Simeji使用示例
- Android实现模拟点击的一种方法
- Android(安卓)检测用户一段时间无操作
- Android模仿Buttonbar