手势
来源:互联网 发布:三维地图制作软件 编辑:程序博客网 时间:2024/05/01 16:41
这里介绍的只是一个简单的DEMO,根据官方的API还可以进行自定义手势的编写,具体的内容就以后遇到了再说,在本项目中也只起一个开后门的验证作用,毕竟一个没有后门的APP不是一个好APP
画手势图:GestureOverlayView
画的时候存在几种状态,可利用GestureDetector中的类进行监听
1.onDown : 触碰
2.onFling:拖动
3.onLongPress:长按
4.onScroll:滚动
5.onSHowPress:按下,未移动未松动时
6.onSingleTagUp:轻击
// 获取手势编辑视图gestureOverlayView = (GestureOverlayView) findViewById(R.id.gestureOverlayView);// 设置手势绘图的颜色gestureOverlayView.setGestureColor(Color.RED);// 设置手势的绘制宽度gestureOverlayView.setGestureStrokeWidth(10);// 为gesture的手势完成事件绑定事件监听器gestureOverlayView.addOnGesturePerformedListener new GestureOverlayView.OnGesturePerformedListener() { @Override public void onGesturePerformed(GestureOverlayView overlay, final Gesture gesture) { // 根据Gesture包含的手势创建一个位图 Bitmap bitmap = gesture.toBitmap(128, 128, 10, 0xffff0000); imageView.setImageBitmap(bitmap); // 获取制定文件对应的手势库 GestureLibrary guestureLibrary = GestureLibraries.fromFile(Environment .getExternalStorageDirectory().getPath() + "/mygestures"); // 添加手势 guestureLibrary.addGesture(gestureEditText.getText().toString(), gesture); guestureLibrary.save();});
读取:
读取和写入的时候都会用到一个GestureLibrary手势库,这个库提供了一个方法,gestureLibrariLibrary.recognize(gesture)这个方法可以获得泛型Prediction的结果,Prediction中包含两个属性,一个是手势图的名称,一个是当前你所绘制的手势与目标手势图的相似度,我们可以通过比较它们之间的相似度来实现我们的逻辑运算。
同样的,我们也需要为它们定义一个监听器,这个监听器也会在手势完成也就是手指抬起来的时候触发。
// 定义手势编辑组件绑定监听器 gestureOverlayView.addOnGesturePerformedListener(new GestureOverlayView.OnGesturePerformedListener() { @Override public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) { // 识别用户刚刚所绘制的手势 ArrayList<Prediction> predictions = gestureLibrariLibrary.recognize(gesture); // 遍历所有找到的Prediction对象 for (Prediction prediction : predictions) { if (prediction.name.equals("test2")){ // 只有相似度大于6的手势才会被输出 if (prediction.score > 6) { } } } } });
0 0