Android開發(fā)之手勢檢測及通過手勢實現(xiàn)翻頁功能的方法
本文實例講述了Android開發(fā)之手勢檢測及通過手勢實現(xiàn)翻頁功能的方法。分享給大家供大家參考,具體如下:
手勢是指用戶手指或觸摸筆在觸摸屏上的連續(xù)觸碰的行為,比如在屏幕上從左至右劃出的一個動作,就是手勢,再比如在屏幕上畫出一個圓圈也是手勢。手勢這種連續(xù)的觸碰會形成某個方向上的移動趨勢,也會形成一個不規(guī)則的幾何圖形。Android對兩種手勢行為都提供了支持:
1. 對于第一種手勢行為而言,Android提供了手勢檢測,并為手勢檢測提供了相應的監(jiān)聽器。
2. 對于第二種手勢行為,Android允許開發(fā)者添加手勢,并提供了相應的API識別用戶的手勢。
手勢檢測
Android 為手勢檢測提供了一個GestureDetector類,GestrueDetector實例代表了一個手勢檢測器,創(chuàng)建GestureDetector時需要傳入一個GestureDetector.OnGestrureListener
實例,GestureDetector.OnGestrueListener就是一個監(jiān)聽器,負責對用戶的手勢行為提供響應。
GestrueDetector.OnGestureListener
里包含的事件處理方法如下。
Boolean onDown(MotionEvent e):當觸碰事件按下時觸發(fā)該方法。
Boolean onFling(MotionEvent e1,MotionEvent e2,float velocitX,floatvelocity):當用戶在觸屏上拖過是觸發(fā)該方法。其中velocityX,velocityY代表拖過動作在橫向,縱向上的速度。
Abstract void onLongPress(MotionEvent e):當用戶在屏幕上長按時觸發(fā)該方法。
Boolean onScroll(MotionEvent e1,MotionEvent e2,float distance,float distance):當用戶在屏幕上滾動式觸發(fā)該方法。
Void onShowPress(MotionEvent e):當用戶在觸摸屏上按下,而且還未移動和松開時觸發(fā)該方法。
Boolean onSingleTapUp(MotionEvent e):用戶在觸摸屏上的輕擊事件將會觸發(fā)該方法。
使用Android的手勢檢測只需要兩個步驟:
1. 創(chuàng)建一個GestureDetector.創(chuàng)建該對象時必須實現(xiàn)一個GestureDetector.OnGestureListener
監(jiān)聽器實例。
2. 為應用程序的Activity的TouchEvent事件綁定監(jiān)聽器,在事件處理中指定把Activity上的TouchEvent事件交給GestureDetector處理。
經(jīng)過上面的兩個步驟之后,Activity上的TouchEvent事件就會交給GestureDetector處理,而GestureDetector就會檢測是否觸發(fā)了特定的手勢動作。
實例:通過手勢實現(xiàn)翻頁效果
思路:把Activity的TouchEvent交給GestureDetector處理.這個程序的特殊之處在于,該程序使用了一個ViewFlipper組件,ViewFlipper組件其實是一個容器類組件,因此可調用addView(View v)添加多個組件,一旦向ViewFlipper中添加了多個組件之后,ViewFlipper可使用動畫控制多個組件之間的切換效果。
本實例通過GestureDetector來檢測用戶的手勢動作,并根據(jù)手勢動作來控制ViewFlipper包含的View組件的切換,從而實現(xiàn)翻頁效果。
關鍵代碼如下:
Public Boolean onFling(MotionEvent event1,MotionEvent event2,float velocityX,velocity) { if(event1.getX()-event2.getX()>FLIP_DISTANCE) { flipper.setInAnimation(animations[0]); flipper.setOutAnimation(animations[1]); flipper.showPrevious(); return true; } else if(event2.getX()-event1.getX()>FLIP_DISTANCE) { flipper.setInAnimation(animations[2]); flipper.setOutAnimation(animation[3]); flipper.showNext(); return true; } return false; }
其中:
animations[0]=AnimaionUtils.loadAnimation(this,R.anim.left_in);
animations[1]=AnimaionUtils.loadAnimation(this,R.anim.left_out);
animations[2]=AnimaionUtils.loadAnimation(this,R.anim.right_in);
animations[3]=AnimaionUtils.loadAnimation(this,R.anim.right_out);
更多關于Android相關內容感興趣的讀者可查看本站專題:《Android手勢操作技巧匯總》、《Android基本組件用法總結》、《Android開發(fā)入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
- Android GestureDetector用戶手勢檢測實例講解
- Android通過手勢實現(xiàn)答題器翻頁效果
- Android應用中實現(xiàn)手勢控制圖片縮放的完全攻略
- android開發(fā)之為activity增加左右手勢識別示例
- android使用gesturedetector手勢識別示例分享
- Android實現(xiàn)手勢滑動多點觸摸放大縮小圖片效果
- android創(chuàng)建手勢識別示例代碼
- Android手勢滑動實現(xiàn)ImageView縮放圖片大小
- Android實現(xiàn)圖片自動輪播并且支持手勢左右無限滑動
- Android實現(xiàn)手勢滑動多點觸摸縮放平移圖片效果
- Android中使用ViewFlipper進行手勢切換實例
相關文章
android自定義控件創(chuàng)建翻頁接口詳細代碼
這篇文章主要為大家介紹了android自定義控件創(chuàng)建翻頁接口詳細代碼,具有一定的實用性,感興趣的小伙伴們可以參考一下2016-07-07Android如何使用GestureDetector進行手勢檢測詳解
GestureDetector使用很方便,提供了單擊,雙擊,長按等操作的處理,但是一般的定義界面都比較復雜,還用很多需要注意的地方,這篇文章主要給大家介紹了關于Android如何使用GestureDetector進行手勢檢測的相關資料,需要的朋友可以參考下2022-01-01Flutter通過Container實現(xiàn)時間軸效果
時間軸是前端UI經(jīng)常用到的效果,本文講解下Flutter如何通過Container實現(xiàn),感興趣的朋友可以了解下2021-05-05