Android简单手势滑动的识别
提要:
對(duì)于Android中的手勢(shì)識(shí)別可以從以下三個(gè)Listener入手——OnTouchListener、OnGestureListener、OnDoubleTapListener。這三個(gè)監(jiān)聽器分別是觸摸監(jiān)聽、手勢(shì)滑動(dòng)監(jiān)聽和屏幕雙擊操作監(jiān)聽。很多的時(shí)候我們需要這些手勢(shì)識(shí)別的操作,例如我們自定義控件的時(shí)候就經(jīng)常會(huì)用到。下面就對(duì)這三個(gè)監(jiān)聽器分別進(jìn)行介紹。
觸摸監(jiān)聽器OnTouchListener
讓我們的Activity去現(xiàn)實(shí)此接口,并重寫onTouch方法。重寫OnTouchListener的onTouch方法 此方法在觸摸屏被觸摸,即發(fā)生觸摸事件(接觸和撫摸兩個(gè)事件)的時(shí)候被調(diào)用。示范代碼如下:
@Overridepublic boolean onTouch(View v, MotionEvent event) {detector.onTouchEvent(event);Toast.makeText(this, "onTouch", TIME_OUT).show();return true;}
手勢(shì)滑動(dòng)監(jiān)聽器OnGestureListener
讓我們的Activity去現(xiàn)實(shí)此接口,并重寫onFling、onLongPress、onScroll、onDown、onShowPress、onSingleTapUp方法。示范代碼如下:
/*** 手勢(shì)滑動(dòng)時(shí)別調(diào)用*/@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE) {Toast.makeText(this, "向左滑動(dòng)", TIME_OUT).show();} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE) {Toast.makeText(this, "向右滑動(dòng)", TIME_OUT).show();}return false;}/*** 長(zhǎng)按時(shí)被調(diào)用*/@Overridepublic void onLongPress(MotionEvent e) {Toast.makeText(this, "觸發(fā)長(zhǎng)按回調(diào)", TIME_OUT).show();}/*** 滾動(dòng)時(shí)調(diào)用*/@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) {Toast.makeText(this, "觸發(fā)滾動(dòng)回調(diào)", TIME_OUT).show();return false;}/*** 在按下動(dòng)作時(shí)被調(diào)用*/@Overridepublic boolean onDown(MotionEvent e) {Toast.makeText(this, "按下回調(diào)", TIME_OUT).show();return false;}/*** 按住時(shí)被調(diào)用*/@Overridepublic void onShowPress(MotionEvent e) {Toast.makeText(this, "按住不松回調(diào)", TIME_OUT).show();}/*** 抬起時(shí)被調(diào)用*/@Overridepublic boolean onSingleTapUp(MotionEvent e) {Toast.makeText(this, "觸發(fā)抬起回調(diào)", TIME_OUT).show();return false;}
雙擊屏幕監(jiān)聽器OnDoubleTapListener
讓我們的Activity去現(xiàn)實(shí)此接口,并重寫onDoubleTap、onDoubleTapEvent、onSingleTapConfirmed方法。示范代碼如下:
@Overridepublic boolean onDoubleTap(MotionEvent arg0) {Toast.makeText(this, "觸發(fā)雙擊回調(diào)", TIME_OUT).show();return false;}@Overridepublic boolean onDoubleTapEvent(MotionEvent arg0) {Toast.makeText(this, "觸發(fā)雙擊的按下跟抬起回調(diào)", TIME_OUT).show();return false;}@Overridepublic boolean onSingleTapConfirmed(MotionEvent arg0) {Toast.makeText(this, "觸發(fā)單擊確認(rèn)回調(diào)", TIME_OUT).show();return false;}
總結(jié)
以上是生活随笔為你收集整理的Android简单手势滑动的识别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android以当前Activity为基
- 下一篇: Android的消息处理机制——Loop