鍍金池/ 教程/ Android/ Android Gestures/手勢
Android 應(yīng)用組件
使用布局文件自定義Android組件
Android通知
Android主題示例
Android JetPlayer實(shí)例
Android MediaPlayer(多媒體播放)
Android AbsoluteLayout
Android FrameLayout
Android Gestures/手勢
Android AutoCompleteTextView(自動完成)實(shí)例
Android 資源組織和訪問
Android ListView
Android GridView
Android數(shù)據(jù)備份
Android撥打電話
Android發(fā)送短信/SMS
Android ProgressDialog
SimpleCursorAdapter
Android發(fā)送電子郵件
Android Activity
Android TextView
Android事件處理
Android TableLayout
Android加載Spinner
Android內(nèi)容提供者
Android自定義字體
Android Service
Android CheckBox
Android Intent過濾器
Android LinearLayout
Android登錄實(shí)例
Android RadioButton
Android樣式和主題
Android自定義組件及屬性
Android UI控件
Android Animation(動畫)實(shí)例
Android Camera(攝像頭)
Android ToggleButton
Android Clipboard(復(fù)制/剪貼板)
Android音頻捕獲(錄音)
發(fā)布Android應(yīng)用
Android Alertdialog(警告對話框)
Android圖片效果
Android內(nèi)部存儲
Android基于位置服務(wù)
Android RadioGroup
Android AutoCompleteTextView
Android Bluetooth(藍(lán)牙)實(shí)例
Android RelativeLayout
Android最佳實(shí)踐
Android本地化
Android自定義組件
Android教程
Android 架構(gòu)
Android UI布局
Android Button
Android Hello World示例
Android音頻管理器實(shí)例
ArrayAdapter
Android拖放
Android碎片/片段
Android圖片切換
Android JSON解析器
Android開發(fā)環(huán)境搭建
Android Spinner
Android樣式示例
使用活動代碼自定義Android組件
Android ImageButton
Android EditText
Android廣播接收器

Android Gestures/手勢

Android提供了特殊類型的觸摸屏事件,如掐,雙擊,滾動,長按和退縮。這些都被稱為手勢。

Android提供GestureDetector類接收移動事件,并告訴我們,這些事件是否有對應(yīng)手勢。要使用它,需要創(chuàng)建GestureDetector對象,然后擴(kuò)展另一個類GestureDetector.SimpleOnGestureListener充當(dāng)監(jiān)聽器,并覆蓋一些方法。它的語法如下:

GestureDetector myG;
myG = new GestureDetector(this,new Gesture());

   class Gesture extends GestureDetector.SimpleOnGestureListener{
   public boolean onSingleTapUp(MotionEvent ev) {
   }
   public void onLongPress(MotionEvent ev) {
   }  
   public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
   float distanceY) {
   }
   public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
   float velocityY) {
   }
}
}

處理捏手勢

Android提供ScaleGestureDetector類來處理如:捏等手勢。為了使用它,需要實(shí)例化這個類的一個對象。它的語法如下:

ScaleGestureDetector SGD;
SGD = new ScaleGestureDetector(this,new ScaleListener());

第一個參數(shù)是上下文,第二個參數(shù)是事件偵聽器。必須定義事件偵聽器并覆蓋 onTouchEvent 函數(shù),使其工作。它的語法如下:

public boolean onTouchEvent(MotionEvent ev) {
   SGD.onTouchEvent(ev);
   return true;
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
   @Override
   public boolean onScale(ScaleGestureDetector detector) {
      float scale = detector.getScaleFactor();
      return true;
   }
}

除了捏手勢,還有其它方法 avaialible 通知的詳細(xì)信息的觸摸事件。它們?nèi)缦拢?/p>

Sr.No Method & description
1 getEventTime()
此方法得到正被處理的當(dāng)前事件的事件時間..
2 getFocusX()
這種方法得到的X坐標(biāo)當(dāng)前手勢的焦點(diǎn)
3 getFocusY()
這個方法得到當(dāng)前手勢的焦點(diǎn)的Y坐標(biāo)
4 getTimeDelta()
此方法返回在先前接受縮放事件和當(dāng)前縮放事件之間的毫秒的時間差
5 isInProgress()
如果刻度手勢正在進(jìn)行此方法返回true..
6 onTouchEvent(MotionEvent event)
此方法接受MotionEvents并調(diào)度事件在適當(dāng)?shù)臅r候

例子

這里有一個例子演示如何使用ScaleGestureDetector類。它創(chuàng)建了一個基本的應(yīng)用程序,放大和捏縮小。

為了試驗這個例子,可以在實(shí)際設(shè)備或仿真器,觸摸屏啟用運(yùn)行此程序。

Steps 描述
1 使用Android Studio創(chuàng)建Android應(yīng)用程序,并將它命名為:Gestures。在創(chuàng)建這個項目,確保目標(biāo)SDK編譯在Android SDK的最新版本和使用更高級別的API
2 修改src/MainActivity.java文件添加必要的代碼
3 修改res/layout/activity_main添加相應(yīng)的XML組件
4 修改res/values/string.xml 添加必要的字符串
5 運(yùn)行應(yīng)用程序并選擇運(yùn)行Android的設(shè)備,并在其上安裝的應(yīng)用和驗證結(jié)果

以下是修改后的主活動文件的內(nèi)容 src/com.yiibai.gestures/MainActivity.java.

package com.example.gestures;

import android.app.Activity;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.widget.ImageView;

public class MainActivity extends Activity {

   private ImageView img;
   private Matrix matrix = new Matrix();
   private float scale = 1f;
   private ScaleGestureDetector SGD;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      img = (