`
su1216
  • 浏览: 671004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
深入入门正则表达式(jav...
浏览量:71916
E60283d7-4822-3dfb-9de4-f2377e30189c
android手机的安全问...
浏览量:128765
社区版块
存档分类
最新评论

android - Gesture学习 1

阅读更多

手势已经不是什么新鲜事物了
关于手势在android上面的应用,我想大概有这么两种
1.用户画完一个手势,然后系统识别
2.用户的动作没有完成,边画边识别

比如:我想定义一个操作,画一个M,然后系统打开music应用,这就是情况1
在list页面中,用户不断拨动list,页面跟随滚动,这是情况2

这里先总结一下情况1

 

==增加+获取=====================================================

 

用户需要在页面上加入组件GestureOverlayView

<android.gesture.GestureOverlayView
	android:id="@+id/gestures_overlay"
	android:layout_width="match_parent"
	android:layout_height="0dip"
	android:layout_weight="1.0"
	android:gestureStrokeType="multiple" />

 这个组件是用来接收手势用的,有了它,你就可以在屏幕上面乱画了

 

 

我们需要给他设置监听事件

GestureOverlayView gestureOverlayView = (GestureOverlayView) findViewById(R.id.gestures_overlay);
gestureOverlayView.addOnGestureListener(new GestureOverlayView.OnGestureListener() {
			public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {}
			public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {}
			public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {}
			public void onGesture(GestureOverlayView overlay, MotionEvent event) {}
});

 上面匿名类的四个函数作用显而易见

 

用户输入的手势对象如何得到呢

mGesture = gestureOverlayView.getGesture();

如果你觉得用户手势太短了,影响判断,那么可以在onGestureEnded时候做一些处理

比如:

if (mGesture.getLength() < LENGTH_THRESHOLD) {
    gestureOverlayView.clear(false);//清除掉用户手势
    mGesture = null;
    //有些东西太短了是不行的...
}else{
    //这样就可以了
}

xml里面写了一个属性android:gestureStrokeType="multiple"

这里可以设置single和multiple

如果你只需要识别一笔,那么single就可以了,如果不确定,那么设置成multiple

"二",就需要两笔才能画出

gesture.getStrokesCount()能得到手势的笔数

(ps:ArrayList<GestureStroke> gestureStrokeList = gesture.getStrokes();

也能得到每一笔的信息)

 

用户画好了手势,如何保存呢

很不幸,手势不是保存到数据库中的,也不能直接保存到数据库中,它是以文件的形式存在的

 

GestureLibrary gestureLibrary;

 

 Library,是的,文件是一个手势库,也就是说,一个文件对应多个手势

 

获得这个Library

gestureLibrary = GestureLibraries.fromFile(path);

然后保存到这个Library

gestureLibrary.addGesture(mName, mGesture);
gestureLibrary.save();

 

增删改查的增加已经结束了

==查询=======================================================

下面看看如何查询

 

mGestureLibrary.getGestures(entryName)

 

 很不幸,它返回一个ArrayList<Gesture>,这也就意味着一个name对应多个Gesture

 

如果要获得库中所有手势,貌似只能这样

final Set<String> entries = mGestureLibrary.getGestureEntries();

 先获得所有名字,然后再获得每个名字对应的所有手势

 

 

但是大多数时候我们并不关心这些

我们更关心的是,如果用户做了个手势,我想知道在库中有没有和这个手势相似的,有多相似!

ArrayList<Prediction> predictions = gestureLibrary.recognize(gesture);

 返回的是精确度的list

Prediction里面只有两个属性,name和score

score越大,那么就与recognize的手势越接近

 

 

 

==修改+删除=====================================================

如果要对手势修改(貌似也没什么可改的),比如改个名字吧,那么只能先删除,再添加了

gestureLibrary.removeGesture(oldOne, oldGesture);
gestureLibrary.addGesture(newOne, newGesture);
gestureLibrary.save();

 最后别忘记save

 

 

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

0
0
分享到:
评论

相关推荐

    iOS游戏应用源代码——xemus-cocos2d-GestureRecognizers-c87d379.zip

    在iOS游戏开发领域,Cocos2d-x是一个广泛使用的开源游戏引擎,它基于C++,支持跨平台开发,包括iOS、Android等。本资源"iOS游戏应用源代码——xemus-cocos2d-GestureRecognizers-c87d379.zip"提供了一套关于Cocos2d-...

    android-ultrasound-gesture:这个android项目旨在使用超声波识别手势,该项目使用Fast Fourier Transform

    android-ultrasound-gesture 该项目的目标是通过应用快速傅立叶变换和机器学习(SVM)仅使用超声来识别各种手势,并在识别移动设备中的手势时达到较高的准确度,最终,我们的目标是能够识别4种手势(通过将其作为...

    rn-gesture-animations:React本机手势和动画示例

    1. **React Native**:React Native是由Facebook开发的开源框架,它允许使用JavaScript和React来构建原生移动应用程序。通过React Native,开发者可以编写一次代码,同时在iOS和Android平台上运行。 2. **手势识别*...

    android-support-v4源码

    1. **Fragment**:Fragment是Android开发中的一个重要概念,它允许在Activity中创建可重用的UI组件。在`v4`库中,Fragment的实现考虑了Android API的兼容性问题,使得开发者可以在2.1及以上版本的设备上使用Fragment...

    安卓Android源码——gesture-imageview.zip

    Android SDK提供了一个叫做`android.gesture`的库,它包含了`GestureOverlayView`和`Gesture`类,用于识别和处理手势。然而,这个项目可能使用了第三方库,如`android.view.ScaleGestureDetector`和`android.view....

    android gesture-imageview源码.zip

    这个压缩包“android gesture-imageview源码.zip”包含了GestureImageView的源代码,让我们深入探讨一下这个库的核心功能和实现原理。 GestureImageView扩展了Android原生的ImageView,它不仅支持基本的图片显示,...

    Android Gesture手势源码

    1. 学习手势:用户在屏幕上画出0到9的手势,系统记录这些手势的轨迹数据,保存为一种格式(如`.gstr`文件)。 2. 识别手势:当用户再次画出手势时,系统读取已学习的手势库,通过某种算法(如动态时间规整DTW-...

    Android-UI-Tutorials-master

    1. **布局管理器(Layout Managers)**:Android提供了多种布局,如线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)和网格布局(GridLayout)。它们决定了视图如何在屏幕上排列和对齐...

    Android手势gesture和ImageView综合测试

    1. **手势识别(Gesture)** - **GestureOverlayView**: Android SDK提供了一个名为GestureOverlayView的视图组件,用于捕捉用户的画图动作并识别为预定义的手势。 - **GestureDetector**: 是Android提供的一个...

    android-interview-questions.zip

    1. **基础知识**: - Android体系结构:了解Android系统由Linux内核、运行库层、应用框架层和应用程序层构成。 - Activity生命周期:掌握启动、暂停、恢复、销毁等状态及其转换。 - Intent机制:理解Intent的作用...

    android-9.zip

    4. **Gesture Navigation**:Android 9 Pie引入了全新的手势导航系统,简化了多任务处理和返回主屏幕的操作。 5. **Material Design更新**:设计语言进行了更新,提供了更丰富的视觉效果和动画,使得界面更加现代和...

    Myo-Armband-Gesture-Detector-Sample---Android:这是关于如何从 Myo Armband 中可用的手势获取提要的简单示例

    Myo Armband是一款创新的肌电图(EMG)传感器设备,能够通过佩戴在手臂上检测肌肉电信号,从而识别用户...通过学习和理解这个示例,开发者将掌握如何利用Myo Armband的潜力,构建出富有创意的、基于手势的Android应用。

    android-SkeletonWearableApp-master.zip

    1. **Android Wear SDK**:开发者需要安装并配置Android Studio,以及对应的Android Wear SDK,这样才能创建支持可穿戴设备的项目。 2. **Wearable Support Library**:这是Android提供的一个库,包含了一系列专门...

    Android-shijian-chuli.zip_android

    1. **事件监听器(Event Listeners)**:Android中的事件处理基于监听器模式,通过实现特定的接口(如OnClickListener、OnTouchListener等)来捕获和处理用户的交互事件。这些接口定义了处理各种事件的方法,如...

    ionic-gesture-app

    1. **在浏览器中运行应用程序**:这通常是开发和测试阶段的操作。首先,确保你已安装了 Node.js 和 npm(Node 包管理器)。然后,在命令行中导航到项目根目录(即包含 `ionic-gesture-app-master` 文件夹的地方)并...

    android-UI.zip_android_android java 界面_android ui_android 界面_校园导

    1. **布局(Layouts)**:Android提供多种布局管理器,如线性布局(LinearLayout)、相对布局(RelativeLayout)、网格布局(GridLayout)、帧布局(FrameLayout)和约束布局(ConstraintLayout)。它们各自有不同的...

    Android代码-GestureTest

    总的来说,`GestureTest`项目是一个很好的学习资源,它展示了如何在Android视频播放器中集成手势控制。通过对`GestureDetector`的深入理解和实践,开发者可以创建更加用户友好的应用程序,提供更丰富的交互体验。

    50-android-hacks

    - **手势识别器(Gesture Recognizer)**:学习如何使用GestureDetector来识别和响应各种手势。 ### 第四章:工具篇 本章介绍了多种用于辅助Android开发的工具: - **ADB命令行工具(ADB Command-Line Tools)**...

    Android sdk.zip

    1. **Android SDK Platform 26 (API级别26)** - API级别26对应的是Android Oreo (8.0),发布于2017年。这个版本引入了多项新特性,如: - 自动填充服务,为用户提供了便捷的数据输入方式。 - 通知渠道,让开发者...

    gesture-demo

    "gesture-demo"项目就是一个很好的实例,用于展示如何在Android应用中实现手势识别功能,非常适合初学者进行学习和实践。 首先,我们来了解一下Android手势的基本概念。手势是用户通过触摸屏幕并进行滑动、点击、...

Global site tag (gtag.js) - Google Analytics