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

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

android創(chuàng)建手勢識別示例代碼

2020-04-11 11:55:35
字體:
供稿:網(wǎng)友

這篇的內(nèi)容使用到的是android.gesture包,具體的例子參考的是Sample中GestureBuilder程序。

1、手勢創(chuàng)建
手勢創(chuàng)建主要用到GestureOverlayView和GestureLibrary。GestureOverlayView的父類為android.widget.FrameLayout,是手勢繪圖區(qū)。GestureLibrary類主要對手勢進行保存、刪除等操作的,存放手勢的倉庫。下面給出創(chuàng)建手勢的例子,如下圖,可以定義如圖手勢打開csdn.net

1.1、創(chuàng)建繪圖區(qū)

復(fù)制代碼 代碼如下:

 GestureOverlayView overlay = (GestureOverlayView) findViewById(R.id.gestures_overlay);

overlay.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_MULTIPLE); 

overlay.setFadeOffset(2000);  //多筆畫每兩次的間隔時間
overlay.setGestureColor(Color.CYAN);//畫筆顏色
overlay.setGestureStrokeWidth(6);//畫筆粗細值

overlay.addOnGestureListener(new GesturesProcessor());

1.2、監(jiān)聽繪制

復(fù)制代碼 代碼如下:

 private class GesturesProcessor implements GestureOverlayView.OnGestureListener {
        public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
            mDoneButton.setEnabled(false);
            mGesture = null;
        }

        public void onGesture(GestureOverlayView overlay, MotionEvent event) {
        }

        public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
            mGesture = overlay.getGesture();
            if (mGesture.getLength() < LENGTH_THRESHOLD) {
                overlay.clear(false);
            }
            mDoneButton.setEnabled(true);
        }

        public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {
        }
    }

1.3、保存手勢

復(fù)制代碼 代碼如下:

 public void addGesture(View v) {
        if (mGesture != null) {
            final TextView input = (TextView) findViewById(R.id.gesture_name);
            final CharSequence name = input.getText();
            if (name.length() == 0) {
                input.setError(getString(R.string.error_missing_name));
                return;
            }

            /**
             * 獲取手勢庫
             *   private final File mStoreFile = new File(Environment.getExternalStorageDirectory(), "gestures");
             *   GestureLibrary sStore = GestureLibraries.fromFile(mStoreFile);
             *
             */
            final GestureLibrary store = GestureBuilderActivity.getStore();
            store.addGesture(name.toString(), mGesture);
            store.save();

            setResult(RESULT_OK);

            final String path = new File(Environment.getExternalStorageDirectory(),
                    "gestures").getAbsolutePath();
            Toast.makeText(this, getString(R.string.save_success, path), Toast.LENGTH_LONG).show();
        } else {
            setResult(RESULT_CANCELED);
        }

        finish();

    }

2、手勢識別

手勢識別也是經(jīng)過創(chuàng)建繪圖區(qū)、監(jiān)聽繪制、比對結(jié)果三個過程,這里直接給出代碼。

復(fù)制代碼 代碼如下:

public class GesturePerformedActivity extends Activity {

 private final File mStoreFile = new File(
   Environment.getExternalStorageDirectory(), "gestures");

 // 手勢庫
 GestureLibrary mGestureLib;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);

  setContentView(R.layout.gesture_perform);
  // 手勢畫板
  GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures_overlay);

  gestures.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_MULTIPLE);

  gestures.setFadeOffset(2000); // 多筆畫每兩次的間隔時間
  gestures.setGestureColor(Color.CYAN);// 畫筆顏色
  gestures.setGestureStrokeWidth(6);// 畫筆粗細值

  // 手勢識別的監(jiān)聽器
  gestures.addOnGesturePerformedListener(new GestureOverlayView.OnGesturePerformedListener() {
   @Override
   public void onGesturePerformed(GestureOverlayView overlay,
     Gesture gesture) {
    // 從手勢庫中查詢匹配的內(nèi)容,匹配的結(jié)果可能包括多個相似的結(jié)果,匹配度高的結(jié)果放在最前面
    ArrayList<Prediction> predictions = mGestureLib
      .recognize(gesture);  
    if (predictions.size() > 0) {
     Prediction prediction = (Prediction) predictions.get(0);
     // 匹配的手勢
     if (prediction.score > 1.0) { // 越匹配score的值越大,最大為10
      Toast.makeText(GesturePerformedActivity.this,
        prediction.name, Toast.LENGTH_SHORT).show();
     }
    }
   }
  });

  if (mGestureLib == null) {
   mGestureLib = GestureLibraries.fromFile(mStoreFile);
   mGestureLib.load();
  }
 }

}



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 崇明县| 桃园县| 抚远县| 白沙| 托里县| 化州市| 丰都县| 广元市| 虎林市| 华阴市| 南安市| 康定县| 杭州市| 松滋市| 应城市| 西畴县| 博客| 武川县| 永福县| 团风县| 林州市| 双鸭山市| 沧州市| 礼泉县| 丰顺县| 岳池县| 宁安市| 吴堡县| 桃园市| 册亨县| 古交市| 广东省| 无锡市| 东乡| 探索| 蓬溪县| 托里县| 军事| 大名县| 岳西县| 全州县|