国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android開發(fā)之手勢檢測及通過手勢實現(xiàn)翻頁功能的方法

2019-10-22 18:27:54
字體:
供稿:網(wǎng)友

本文實例講述了Android開發(fā)之手勢檢測及通過手勢實現(xiàn)翻頁功能的方法。分享給大家供大家參考,具體如下:

手勢是指用戶手指或觸摸筆在觸摸屏上的連續(xù)觸碰的行為,比如在屏幕上從左至右劃出的一個動作,就是手勢,再比如在屏幕上畫出一個圓圈也是手勢。手勢這種連續(xù)的觸碰會形成某個方向上的移動趨勢,也會形成一個不規(guī)則的幾何圖形。Android對兩種手勢行為都提供了支持:

1. 對于第一種手勢行為而言,Android提供了手勢檢測,并為手勢檢測提供了相應(yīng)的監(jiān)聽器。

2. 對于第二種手勢行為,Android允許開發(fā)者添加手勢,并提供了相應(yīng)的API識別用戶的手勢。

手勢檢測

Android 為手勢檢測提供了一個GestureDetector類,GestrueDetector實例代表了一個手勢檢測器,創(chuàng)建GestureDetector時需要傳入一個GestureDetector.OnGestrureListener實例,GestureDetector.OnGestrueListener就是一個監(jiān)聽器,負責(zé)對用戶的手勢行為提供響應(yīng)。

GestrueDetector.OnGestureListener里包含的事件處理方法如下。

Boolean onDown(MotionEvent e):當(dāng)觸碰事件按下時觸發(fā)該方法。
Boolean onFling(MotionEvent e1,MotionEvent e2,float velocitX,floatvelocity):當(dāng)用戶在觸屏上拖過是觸發(fā)該方法。其中velocityX,velocityY代表拖過動作在橫向,縱向上的速度。
Abstract void onLongPress(MotionEvent e):當(dāng)用戶在屏幕上長按時觸發(fā)該方法。
Boolean onScroll(MotionEvent e1,MotionEvent e2,float distance,float distance):當(dāng)用戶在屏幕上滾動式觸發(fā)該方法。
Void onShowPress(MotionEvent e):當(dāng)用戶在觸摸屏上按下,而且還未移動和松開時觸發(fā)該方法。
Boolean onSingleTapUp(MotionEvent e):用戶在觸摸屏上的輕擊事件將會觸發(fā)該方法。

使用Android的手勢檢測只需要兩個步驟:

1. 創(chuàng)建一個GestureDetector.創(chuàng)建該對象時必須實現(xiàn)一個GestureDetector.OnGestureListener監(jiān)聽器實例。

2. 為應(yīng)用程序的Activity的TouchEvent事件綁定監(jiān)聽器,在事件處理中指定把Activity上的TouchEvent事件交給GestureDetector處理。

經(jīng)過上面的兩個步驟之后,Activity上的TouchEvent事件就會交給GestureDetector處理,而GestureDetector就會檢測是否觸發(fā)了特定的手勢動作。

實例:通過手勢實現(xiàn)翻頁效果

思路:把Activity的TouchEvent交給GestureDetector處理.這個程序的特殊之處在于,該程序使用了一個ViewFlipper組件,ViewFlipper組件其實是一個容器類組件,因此可調(diào)用addView(View v)添加多個組件,一旦向ViewFlipper中添加了多個組件之后,ViewFlipper可使用動畫控制多個組件之間的切換效果。

本實例通過GestureDetector來檢測用戶的手勢動作,并根據(jù)手勢動作來控制ViewFlipper包含的View組件的切換,從而實現(xiàn)翻頁效果。

關(guā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程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汝阳县| 新龙县| 安陆市| 开原市| 札达县| 泰宁县| 广平县| 云南省| 仁寿县| 玛纳斯县| 东港市| 宽甸| 江安县| 乌拉特前旗| 镇沅| 民权县| 杭锦后旗| 平山县| 漯河市| 尼勒克县| 合肥市| 商洛市| 宝清县| 水城县| 宁化县| 新泰市| 临夏县| 景谷| 洛隆县| 汶上县| 新营市| 太白县| 镇平县| 凌源市| 武隆县| 平乡县| 肥城市| 曲周县| 延安市| 长丰县| 金山区|