android事件處理_第1頁(yè)
android事件處理_第2頁(yè)
android事件處理_第3頁(yè)
android事件處理_第4頁(yè)
android事件處理_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1. Android事件現(xiàn)代的用戶界面,都是以事件來(lái)驅(qū)動(dòng)的來(lái)實(shí)現(xiàn)人機(jī)交換的,而Android上的一套UI控件,無(wú)非就是派發(fā)鼠標(biāo)和鍵盤(pán)事件,然后每個(gè)控件收到相應(yīng)的事件之后,做相應(yīng)的處理。如Button控件,就只需要處理Down、move、up這幾個(gè)事件,Down的時(shí)候重繪控件, move的時(shí)候一般也需要重繪控件,當(dāng)up的時(shí)候,重繪控件,然后產(chǎn)生onClick事件。在Android中通過(guò)實(shí)現(xiàn)OnClickListener接口的onClick方法來(lái)實(shí)現(xiàn)對(duì)Button控件的處理。對(duì)于觸摸屏事件(鼠標(biāo)事件有按下有:按下、彈起、移動(dòng)、雙擊、長(zhǎng)按、滑動(dòng)、滾動(dòng)。按下、彈起、移動(dòng)(down、move、up是簡(jiǎn)單

2、的觸摸屏事件,而雙擊、長(zhǎng)按、滑動(dòng)、滾動(dòng)需要根據(jù)運(yùn)動(dòng)的軌跡來(lái)做識(shí)別的。在Android中有專門的類去識(shí)別,對(duì)于按鍵(keyevent,無(wú)非就是按下、彈起、長(zhǎng)按等。2. Android事件處理Android手機(jī)的坐標(biāo)系是以左上定點(diǎn)為原點(diǎn)坐標(biāo)(0,0, 向右為X抽正方形,向下為Y抽正方向。2.1 簡(jiǎn)單觸摸屏事件代碼如下:1.public boolean onTouchEvent(MotionEvent event2. 3. int events = MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE,4. MotionEvent.ACTION_UP, M

3、otionEvent.ACTION_MOVE, MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_OUTSIDE,5. MotionEvent.ACTION_POINTER_DOWN,MotionEvent.ACTION_POINTER_UP,6. MotionEvent.EDGE_TOP,MotionEvent.EDGE_BOTTOM,MotionEvent.EDGE_LEFT,MotionEvent.EDGE_RIGHT;7.8. String szEvents="ACTION_DOWN", "ACTION_MOVE&

4、quot;,9. "ACTION_UP", "ACTION_MOVE", "ACTION_CANCEL", "ACTION_OUTSIDE",10. "ACTION_POINTER_DOWN","ACTION_POINTER_UP",11. "EDGE_TOP","EDGE_BOTTOM","EDGE_LEFT","EDGE_RIGHT"12. for(int i=0; i < events

5、.length; i+13. 14. if(eventsi = event.getAction(15. 16. if(oldevent != event.getAction(17. 18. DisplayEventType(szEventsi;19. oldevent = event.getAction(;20. 21. break;22. 23. 24. return super.onTouchEvent(event;25. 2.2手勢(shì)識(shí)別代碼如下:3.public class TestEvent extends Activity 4. /* Called when the activity

6、 is first created. */5.6. TextView m_eventType;7. int oldevent = -1;8. private GestureDetector gestureDetector= new GestureDetector(new OnGestureListener(9. 10.11. / 鼠標(biāo)按下的時(shí)候,會(huì)產(chǎn)生onDown。由一個(gè)ACTION_DOWN產(chǎn)生。12. public boolean onDown(MotionEvent event 13.14. DisplayEventType("mouse down" + "

7、 " + event.getX(+ "," + event.getY(;15. return false;16. 17. / 用戶按下觸摸屏、快速移動(dòng)后松開(kāi),這個(gè)時(shí)候,你的手指運(yùn)動(dòng)是有加速度的。18. / 由1個(gè)MotionEvent ACTION_DOWN,19. / 多個(gè)ACTION_MOVE, 1個(gè)ACTION_UP觸發(fā)20. / e1:第1個(gè)ACTION_DOWN MotionEvent21. / e2:最后一個(gè)ACTION_MOVE MotionEvent22. / velocityX:X軸上的移動(dòng)速度,像素/秒23. / velocityY:Y軸上的移

8、動(dòng)速度,像素/秒24. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,25. float velocityY 26. DisplayEventType("onFling"27. return false;28. 29. / 用戶長(zhǎng)按觸摸屏,由多個(gè)MotionEvent ACTION_DOWN觸發(fā)30. public void onLongPress(MotionEvent event 31. DisplayEventType("on long pressed"

9、32. 33. / 滾動(dòng)事件,當(dāng)在觸摸屏上迅速的移動(dòng),會(huì)產(chǎn)生onScroll。由ACTION_MOVE產(chǎn)生34. / e1:第1個(gè)ACTION_DOWN MotionEvent35. / e2:最后一個(gè)ACTION_MOVE MotionEvent36. / distanceX:距離上次產(chǎn)生onScroll事件后,X抽移動(dòng)的距離37. / distanceY:距離上次產(chǎn)生onScroll事件后,Y抽移動(dòng)的距離38. public boolean onScroll(MotionEvent e1, MotionEvent e2,float distanceX,39. float distanceY

10、 40. DisplayEventType("onScroll" + " " + distanceX + "," +distanceY;41. return false;42. 43. /點(diǎn)擊了觸摸屏,但是沒(méi)有移動(dòng)和彈起的動(dòng)作。onShowPress和onDown的區(qū)別在于44. /onDown是,一旦觸摸屏按下,就馬上產(chǎn)生onDown事件,但是onShowPress是onDown事件產(chǎn)生后,45. /一段時(shí)間內(nèi),如果沒(méi)有移動(dòng)鼠標(biāo)和彈起事件,就認(rèn)為是onShowPress事件。46. public void onShowPress(M

11、otionEvent event 47. DisplayEventType("pressed"48.49. 50. / 輕擊觸摸屏后,彈起。如果這個(gè)過(guò)程中產(chǎn)生了onLongPress、onScroll和onFling事件,就不會(huì)51. / 產(chǎn)生onSingleTapUp事件。52. public boolean onSingleTapUp(MotionEvent event 53. DisplayEventType("Tap up"54. return false;55. 56.57. ;58.59. Override60. public void on

12、Create(Bundle savedInstanceState 61. super.onCreate(savedInstanceState;ype;64. 65. Override66. public boolean onTouchEvent(MotionEvent event67. 68. if(gestureDetector.onTouchEvent(event69. return true;70. else71. return false;72. 73.74.2.3鍵盤(pán)事件鍵盤(pán)事件比較簡(jiǎn)單,直接重寫(xiě)原來(lái)的方法就可以了。代碼如下:1.public boolean onKeyDown(in

13、t keyCode, KeyEvent event2. 3. switch(keyCode4. 5. case KeyEvent.KEYCODE_HOME:6. DisplayEventType("Home down"7. break;8. case KeyEvent.KEYCODE_BACK:9. DisplayEventType("Back down"10. break;11. case KeyEvent.KEYCODE_DPAD_LEFT:12. DisplayEventType("Left down"13. break;14.

14、 15. /return true;16. return super.onKeyDown(keyCode, event;17. 18. Override19. public boolean onKeyUp(int keyCode, KeyEvent event20. 21. switch(keyCode22. 23. case KeyEvent.KEYCODE_HOME:24. DisplayEventType("Home up"25. break;26. case KeyEvent.KEYCODE_BACK:27. DisplayEventType("Back

15、up"28. break;29. case KeyEvent.KEYCODE_DPAD_LEFT:30. DisplayEventType("Left up"31. break;32. 33. /return true;34. return super.onKeyUp(keyCode, event;35. 3. 模擬鼠標(biāo)/按鍵事件Instrumentation發(fā)送鍵盤(pán)鼠標(biāo)事件:Instrumentation提供了豐富的以send開(kāi)頭的函數(shù)接口來(lái)實(shí)現(xiàn)模擬鍵盤(pán)鼠標(biāo),如下所述:sendCharacterSync(int keyCode /用于發(fā)送指定KeyCode的按鍵sendKeyDownUpSync(int key /用于發(fā)送指定KeyCode的按鍵sendPointerSync(MotionEvent event /用于模擬TouchsendStringSync(String text /用于發(fā)送字符串Instrumentation inst=new Instrumentation(;inst.sendPo

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論