Android 模拟MotionEvent事件 触发输入法
2016-06-05 14:18
417 查看
一、布局文件showime.xml:
二、Activity,ShowIME.Java文件源码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/ButtonIME" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5px" android:text="弹出软键盘输入法" /> <EditText android:id="@+id/EditTextIME" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5px" android:text="显示输入法键盘"/> </LinearLayout>
二、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() { @Override public 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; } } } }
相关文章推荐
- Javascript 模拟点击事件(点击链接与html点击) 兼容IE/Firefox
- Android开发中MotionEvent坐标获取方法分析
- python实现模拟按键,自动翻页看u17漫画
- android事件传递机制测试分析
- android模拟按键
- android事件传递机制测试分析
- 自定义AlertDialog,加入EditText控件无法弹出键盘
- android中怎么模拟点击事件
- Android触控 MotionEvent(一)
- android 自定义控件 -- 画板
- 提高Android应用手写流畅度(基础篇)
- android开发_MotionEvent与其他事件处理_手势_键盘_鼠标
- 理解在computeScroll里scrollTo和设置Scroller的startScroll
- MotionEvent//动作事件
- 23.Android 软键盘工具ImeUtil
- Java Swing模拟按键事件
- android input进程(模拟按键)
- Android模拟按键——源码环境下开发应用程序
- 模拟物理按键,获取当前显示的Activity名,获取API Level
- 安卓飞机大战(五) 飞机瞬移的解决方法