標籤:ongestureperformedli gestureoverlayview gesturebuilder 自訂手勢 android
1.回顧
上篇實現:
(1)OnTouchListener 實現 上下左右手勢識別
(2)OnTouchListener + SimpleOnGestureListener + GestureDetector 實現 上下左右 手勢識別
2.重點
(1)GestureOverlayView + GestureLibrary + OnGesturePerformedListener 實現 自訂手勢識別
(2)demo 下載
3.
4. 基本步驟
(1)自訂手勢識別檔案
(2)載入 手勢檔案
(3)布局實現
(4)識別/讀取 手勢
5. 自訂手勢檔案 5.1 建立 Android Simple Project
以eclipse為例:File -> New -> Other -> Android -> Android Simple Project ;
5.2 Next 選擇安卓版本
5.3 Next 選擇 GestureBuilder
5.4 finish
右擊 運行工程 -> 運行後 點擊 -> add gesture -> 畫上你自己定義的手勢 -> 起個名字(記住 需要使用)-> done ;
5.5 取得 gestrue 手勢檔案
當點擊done -> 顯示 Toast 提醒 檔案地址 -> 儲存在sdcard 裡,自己匯出即可 ;
6.載入gestrue 手勢檔案
(1)在 res 檔案夾下 建立 raw 檔案夾;
(2)複製gesture 到raw 檔案夾下 ;
(3)在onCreate 裡載入
private GestureLibrary library;
//載入手勢檔案 library=GestureLibraries.fromRawResource(MainActivity.this,R.raw.gestures);library.load();
7. 布局實現
(1)在 布局檔案中 添加 GestureOverlayView ,可以 將你自己的 控制項 放在 布局裡面;
(2)執行個體:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <android.gesture.GestureOverlayView android:id="@+id/gestureOverlayView1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" > <ImageView android:id="@+id/img_test" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:layout_gravity="center" android:src="@drawable/icon_location" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_gravity="center|top" android:text="沒有滑動" android:textColor="#0000ff" android:textSize="25sp" /> </android.gesture.GestureOverlayView></RelativeLayout>
8. 識別手勢
(1)實現OnGesturePerformedListener 監聽
/** * 第三中方式 自訂方式 * *///設定監聽class gestureOverlayListener implements OnGesturePerformedListener{@Overridepublic void onGesturePerformed(GestureOverlayView overlay,Gesture gesture) {//識別手勢: 通過 library 讀取手勢檔案 ,在這裡讀取ArrayList<Prediction> predictions=library.recognize(gesture);//去第一個就 是 取到的第一個Prediction prediction=predictions.get(0);//提示值String str="沒有改手勢";//更加相似性 來 取得 區間(0.0~10.0 大致區間)if(prediction.score>=5.0){//通過 name 來判斷 值if(prediction.name.equals("error")){str="error:很遺憾,錯的!";img_test.setImageResource(R.drawable.icon_error);}else if(prediction.name.equals("light")){str="light:我是閃電";img_test.setImageResource(R.drawable.icon_light);}else if(prediction.name.equals("none")){str="none :什麼都沒有";img_test.setImageResource(R.drawable.icon_none);}else if(prediction.name.equals("right")){str="true : 恭喜你答對了!";img_test.setImageResource(R.drawable.icon_true);}} textView1.setText(str);Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();}}
(2)初始化控制項 和 添加監聽
gestureOverlayView1=(GestureOverlayView) findViewById(R.id.gestureOverlayView1);//添加gestureOverlayView1.addOnGesturePerformedListener(new gestureOverlayListener());
9.demo 下載
http://download.csdn.net/detail/lablenet/9063867
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Android-手勢識別(自訂手勢識別:四種自訂手勢)