Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 手勢交互之GestureOverlayView,gestureoverlayview

手勢交互之GestureOverlayView,gestureoverlayview

編輯:關於android開發

手勢交互之GestureOverlayView,gestureoverlayview


一種用於手勢輸入的透明覆蓋層,可以覆蓋在其他空間的上方,也可包含在其他控件 android.gesture.GestureOverlayView

獲得手勢文件

需要用GesturesBuilder,如果沒有就安裝這個app

安裝

其實這是一個Sample的,用eclipse和android studio中各有不同方法導入,在版本android2.33中有

取得文件

在GesturesBuilder畫對應的手勢和命名之後,可以在文件夾mmt中的sdcard中有個gestures文件,把這個文件保存起來,導入到你的項目的res文件夾中

監聽器

有三種監聽器

  1. OnGestureListener 手勢監聽器
  2. OnGesturePerformedListener 手勢執行監聽器(一般用這個)
  3. OnGesturingListener執行中的監聽器

例子

實現在一張圖片上各種自定義手勢的效果

1.布局

可以在面板中的Advanced有GestureOverlayView,或者直接在AndroidMainFest.XML編寫

<android.gesture.GestureOverlayView
        android:id="@+id/gestureOverlayView"
        android:layout_width="180dp"
        android:layout_height="180dp" >
        <ImageView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/ic_launcher"/
    </android.gesture.GestureOverlayView>

2.找到並加載剛剛導出來的手勢資源

我的是res文件夾下新建的raw文件夾。設定了這三個手勢

//這裡用到final是由於匿名類(內部類)用到外部類,涉及到生命周期的緣故
final GestureLibrary library =GestureLibraries.fromRawResource(MainActivity.this, R.raw.gestures);
library.load();

3.給gestureOverlayView設置監聽器

gestureOverlayView.addOnGesturePerformedListener(new OnGesturePerformedListener() {			
	@Override
	public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
		// TODO Auto-generated method stub
		//識別手勢,返回值是一個手勢的集合
		ArrayList<Prediction> mygesture = library.recognize(gesture);
		Prediction prediction = mygesture.get(0);
		/*
*score是指相似度,就是有點類似在這個誤差范圍內都認為是這個手勢 *至於這個的數值需要自己調試,找一個合適的值,值越大,就越要接近原來的 * name就是你的手勢的名字 */ if (prediction.score >= 5.0 ) { if (prediction.name.equals("exit")) { finish(); }else if(prediction.name.equals("next")){ Toast.makeText(MainActivity.this, "下一個", Toast.LENGTH_SHORT).show(); }else if (prediction.name.equals("previous")) { Toast.makeText(MainActivity.this, "前一個", Toast.LENGTH_SHORT).show(); } }else { Toast.makeText(MainActivity.this, "沒有這個手勢", Toast.LENGTH_SHORT).show(); } } });
效果

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved