上篇文章中说道了触控事件,但是只对MotionEvent做了细说,很多东西还是不懂怎么用触控事件,现在就做对上篇的补充吧
在view重写onTouchEvent方法,通过event.getAction()对不同的enent就可以处理了,代码如下
public boolean onKeyDown(int keyCode,KeyEvent event) { switch(keyCode) { case KeyEvent.KEYCODE_0: DisplayToast("你按下数字键0"); break; case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast("你按下中间键"); break;sss case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast("你按下下方向键"); break; case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast("你按下左方向键"); break; case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast("你按下右方向键"); break; case KeyEvent.KEYCODE_DPAD_UP: DisplayToast("你按下上方向键"); break; case KeyEvent.KEYCODE_ALT_LEFT: DisplayToast("你按下组合键alt+←"); break; } return super.onKeyDown(keyCode, event); }
在了解这个时间之前,先熟悉下dispatchkeyevent和onkeydown和onkeyup的关系 当键盘按下时
首先触发dispatchKeyEvent
然后触发onUserInteraction 再次onKeyDown 如果按下紧接着松开,则是俩步
紧跟着触发dispatchKeyEvent 然后触发onUserInteraction 再次onKeyUp
当我们重写了onKeyDown方法后,如果return false,则会继续调用系统的onKeyDown方法。如果只想让程序调用自己写的onKeyDown,则需要return true。了解关系后就看鼠标模拟事件。我们重写dispatchKeyEvent,之后就可以做相应操作,
备注:TVConstants属于个人封装的类,对应keyevent的相应类型。
<span style="font-size:14px;">@Override public boolean dispatchKeyEvent(KeyEvent event) { switch(event.getKeyCode()){ case TVConstants.KEYCODE_UP: case TVConstants.KEYCODE_DOWN: case TVConstants.KEYCODE_LEFT: case TVConstants.KEYCODE_RIGHT: case TVConstants.KEYCODE_CENTER: default: break; } return super.dispatchKeyEvent(event); } </span>三 instrumentation
instrumentation发送键盘鼠标事件:Instrumentation提供了丰富的以send开头的函数接口来实现模拟键盘鼠标,如下所述:
sendCharacterSync(int keyCode) //用于发送指定KeyCode的按键
sendKeyDownUpSync(int key) //用于发送指定KeyCode的按键
sendPointerSync(MotionEvent event) //用于模拟Touch
sendStringSync(String text) //用于发送字符串
Instrumentation inst=new Instrumentation();
inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 10, 10, 0));
inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 10, 10, 0));
类似peddingIntent的用法,这样我们自己绘制一个鼠标,在里面相应代码处理相应逻辑就可以具体实现代码之后将会发布。
原文地址:http://blog.csdn.net/sk719887916/article/details/44781475