返回顶部
首页 > 资讯 > 移动开发 >android创建手势识别示例代码
  • 673
分享到

android创建手势识别示例代码

示例手势识别手势Android 2022-06-06 10:06:19 673人浏览 安东尼
摘要

这篇的内容使用到的是Android.gesture包,具体的例子参考的是Sample中GestureBuilder程序。 1、手势创建手势创建主要用到GestureOverla

这篇的内容使用到的是Android.gesture包,具体的例子参考的是Sample中GestureBuilder程序。

1、手势创建
手势创建主要用到GestureOverlayView和GestureLibrary。GestureOverlayView的父类为android.widget.FrameLayout,是手势绘图区。GestureLibrary类主要对手势进行保存、删除等操作的,存放手势的仓库。下面给出创建手势的例子,如下图,可以定义如图手势打开csdn.net

1.1、创建绘图区

代码如下:
 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、监听绘制

代码如下:
 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、保存手势

代码如下:
 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;
            }

           
            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、手势识别

手势识别也是经过创建绘图区、监听绘制、比对结果三个过程,这里直接给出代码。

代码如下:
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);// 画笔粗细值

  // 手势识别的监听器
  gestures.addOnGesturePerformedListener(new GestureOverlayView.OnGesturePerformedListener() {
   @Override
   public void onGesturePerformed(GestureOverlayView overlay,
     Gesture gesture) {
    // 从手势库中查询匹配的内容,匹配的结果可能包括多个相似的结果,匹配度高的结果放在最前面
    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();
  }
 }

}

您可能感兴趣的文章:Android通过滑动实现Activity跳转(手势识别器应用)Android手势识别器GestureDetector使用详解札记:android手势识别功能实现(利用MotionEvent)Android View进行手势识别详解Android基础开发之手势识别Android应用开发中触摸屏手势识别的实现方法解析android开发之为activity增加左右手势识别示例android使用gesturedetector手势识别示例分享理解Android的手势识别提高APP的用户体验Android使用GestureOverlayView控件实现手势识别


--结束END--

本文标题: android创建手势识别示例代码

本文链接: https://lsjlt.com/news/27199.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作