`
mmdev
  • 浏览: 13296620 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】

 
阅读更多

李华明Himi原创,转载务必在明显处注明:
转载自【黑米GameDev街区】原文链接:http://www.himigame.com/android-game/340.html

很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块;请点击下面联系进入阅读:

【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!


有童鞋问我为什么不用SDK2.1 ,2.2来进行游戏开发,那我这里稍微说两句:

1.Android SDK 属于向下兼容!那么低版本可以运行的,高版本基本上更是没问题!(当然每次SDK的更新也会带来新功能,或者修改了一些原来的BUG等等,那么其实对于游戏开发来说,如果你的游戏中不需要更高的SDK版本的支持情况下,完全不必去追求最新的SDK!)

2.使用低版本进行游戏开发这样能兼顾更多的机型,获取更多的用户!

3.大家都知道Android SDK 每次版本的更新,底层代码也会更健壮和优化了!比如我们公司的网游Android版在G2(SDK1.5)上跑起来稍微有些卡,而在我的手机上(SDK2.2)运行起来流畅的没说的~各种舒坦~~但是这样也会带来一些弊端,比如我们自己游戏如果上来就用高版本SDK进行开发,那么对于性能、内存上到底如何,我们都不会很容易的看出其效果,如果我们用低版本的SDK则会让我们明显的感受到性能到底如何~你想想如果你的游戏在1.5 ,1.6上跑起来很流畅,那放在更高版本的SDK机器上更是没说的啦~

总结:游戏开发中,如果你游戏不需要更高的API的支持,那么推荐基于SDK 1.5和1.6来开发!

在上一篇中我给大家介绍了触摸屏手势操作,但是这种触屏手势的操作比较有局限性;比如我们都知道Android可以利用手势来解锁,比如九宫格形式的,通过自定义的一个单笔画手势可以解开屏幕锁,还可以自定义笔画手势来启动一个应用等,那么这种所谓的笔画手势其实就是今天我要给大家讲解的输入法手势识别技术!这种手势是我们可以自己来自定义,而不像之前的触屏手势操作只是利用Android 对一些触屏动作的封装罢了。下面上几张手机自定义笔划手势解锁的的截图:

左图中最后一个是自定义解锁的输入法手势~

OK,那么既然利用手势既然能进行解锁等操作,那么我们游戏开发中,更是可以加入这一亮点了,比如在游戏中我画个圆形执行换背景操作,画个X表示退出游戏等等,等等、哈哈 是不是感觉很有意思了?好的,下面就开始进入讲解!

首先本篇主要学习两点:

1. 如何创建输入法手势、删除输入法手势、从SD卡中读取出手势文件!

2.当输入法手势创建后,如何来匹配出我们的自定义手势!

下面我们来熟习两个类和几个概念:

1. 什么是GestureOverlayView ?简单点说其实就是一个手写绘图区;

2. 什么是GestureLibrary ?这个类是对手势进行保存、删除等操作的,一个存放手势的小仓库!

3. 笔划是什么,字体笔画? 是的,其实就是跟我们写字的笔划一个概念!

4.什么是笔类型?输入法手势操作中,笔划类型有两种;一种是:单一笔划,另外一种是:多笔划

所谓单一笔划笔划就是一笔划画出一个手势,从你手指接触屏幕开始到你离开屏幕笔画就会立刻形成一个手势!一气呵成!

而多笔划则是可以在一定紧凑时间内随意几笔划都可!然后超过这个紧凑时间后便会形成一个手势!

先出项目截图,简单说下其功能和操作:

【图1】 【图2】

图1界面中分为3块,从上到下依次是:TextView ,EditText,SurfaceView;然后在SurfaceView后面还有一个覆盖全屏的GestureOverlayView!

图2界面是在创建好的手势中匹配手势的界面,这里很清晰看出来,找的很对 ~嘿嘿~

先看下main.xml:

xml中注册的有我们自定义的surfaceview,对此不太熟悉可以去看下【Android2D开发之六】,不多解释了。关于GestureOverlayView这里也只是简单的定义了宽高,还有一些重要的属性设置在代码中设置了,当然xml也可以设置的;

下面看MainActivity.java

这个就是MainActivity主要代码了,其中添加手势、匹配手势、遍历手势、将手势转成图片这些我都单独写成了函数,这样让各位童鞋更清晰思路一些。

从以上代码中我们看出在创建手势之前,手写绘图区(GestureOverlayView)肯定先被创建出来,然后我们就可以在其区域中进行笔划绘画手势了,当然绘画手势前,我们也需要设置了笔划类型,也就是我一开始给大家介绍的~其后最重要的就是手写绘图区的手势监听器绑定,增加OnGestureListener这个监听器重写了四个函数,这里最重要的就两个函数:

onGestureStarted 和 onGestureEnded ; 手势开始和手势结束的监听函数!

尤其是手势结束监听这个函数尤为重要,在其中我设置好几个条件语句,这么几个条件一方面是让大家了解Gesture中一些比较重要常用的方法,另一方面我要提醒各位童鞋:

如果你设置笔划类型是多笔划类型的,那么理想状态下,应该是在一段紧凑时间内,不管你使用了几笔划来绘制手势,系统都应该在判定你在一定短暂时间内没有再进行笔划的时候才应该创建手势,并且系统响应此函数;

其实错了,一开始我也这么想,但是发现,不管你设置的笔划类型是单一的还是多笔划当你手指离开屏幕,不管你当前是第几笔,Android都会去响应这个完成函数,so~ 我在这里调用手势Gesture类中的getStrokesCount()函数,这个函数会记录在紧凑时间内你绘制手势的笔划数,那么根据这个函数我们就可以解决手指离开屏幕总被响应的问题了,因为单一笔划类型永远这个值不会大于1!

而 if (event.getAction() == MotionEvent.ACTION_UP) {}写这个只是给大家演示第二个参数按键动作该怎么用;

那么我们下面就来看如何创建一个手势:

这里也都很好理解,套路类似之前File文件存储的套路,先判断SD是否存在,然后是文件是否存在:

如果文件不存在就先直接添加到手势到手势仓库中,然后手势仓调用gestureLib.save()才算把手势存到SD卡的手势文件中。

文件存在的话还要去判定是否文件中包含了相同名字的手势;当然这里可以不判定是否有相同手势名存在,然后进行删除操作!其实也可不删除,直接添加进去当前新建的手势;原因看了下面的备注解释就明白了;

备注 1:因为gestureLib保存的手势是个HashMap, key=手势的名字,value=手势,所以gestureLib.removeGesture(name, gesture);这种删除方式只是删除了手势,该手势名字依旧保存在hashmap中,下次还有相同的name手势存入的时候Hashmap就直接覆盖本条目了。所以根据Hashmap的特征,我们可以不进行删除操作,可以直接gestureLib.addGesture(name, gesture);因为如果出现相同的手势名字的手势,Hashmap就会根据key(手势的名字)直接覆盖其条目的value(手势)滴~

备注2 :这里也是一种删除手势的方式,但是这种方式跟备注1的不同,这里是将Hashmap中的条目删除,也就是说key和value都被删去!

下面看下如何把手势转成bitmap!

下面是如何遍历手势!

下面最后来看看手势的匹配!(超重要的!自己也搞了许久才找到解决的方法)

那么最后给各位童鞋说一下,其实输入法手势操作很是适合游戏中使用,不管是触摸屏手势操作还是今天讲的输入法手势操作如果加到游戏中那都是相当赞的!但是我们公司网游引擎和框架不适合插入手势 - -、唉~


其实前两天应该发这篇的,但是因为工作忙了几天,让大家久等了,挺不好意思的,所以今天熬夜给大家写了出来,现在都凌晨 7:00 了~

源码下载地址:http://www.himigame.com/android-game/340.html

.

分享到:
评论

相关推荐

    Android游戏开发 自定义手势--输入法手势技术

    总之,Android游戏开发中的自定义手势和输入法手势技术为游戏带来了丰富的交互体验。通过巧妙地利用`GestureOverlayView`和`GestureLibrary`,开发者可以创建个性化的用户交互方式,提升游戏的吸引力和用户满意度。...

    自定义手势(gesture)和手势识别

    在Android开发中,手势(Gesture)和手势识别是提升用户体验的重要技术之一。用户可以通过简单的手势操作,如滑动、点击、捏合等,与应用程序进行交互。本篇将深入探讨自定义手势(gesture)和手势识别,特别是如何...

    android输入法手势程序源码

    这份"android输入法手势程序源码"是一个很好的学习资源,可以帮助开发者深入了解手势识别技术和如何将其应用于Android应用中。下面将详细探讨相关知识点。 一、Android手势输入 1. **手势识别库**:Android系统...

    Android输入法手势操作源码

    在Android应用开发中,手势操作是一种常见的用户交互方式,它提供了更为直观和便捷的操作体验,特别是在游戏开发和输入法应用中。本篇将深入探讨Android手势操作的实现原理,主要基于`GestureProject`这个源码项目...

    Android-安卓手势解锁示例-手势解锁-自定义手势-安卓手势

    本示例主要关注如何在Android应用中实现手势解锁功能,包括基础的手势解锁逻辑以及自定义手势识别。 一、手势解锁基本原理 手势解锁的核心在于识别用户在触屏上绘制的连续点序列。系统记录用户设定的手势路径(一...

    Android手机输入法手势识别源代码

     关于两种方式创建模拟器的SDcard在【Android2D游戏开发之十】有详解   if (Environment.getExternalStorageState() != null) {// 这个方法在试探终端是否有sdcard!   if (!file.exists()) {// 判定是否已经...

    Android输入法手势识别例子代码.rar

    Android输入法手势识别例子代码,android.gesture这个类在api-4(SDK1.6)才开始支持的!默认存到SD卡中,所以别忘记在AndroidMainfest.xml加上SD卡读写权限!测试时请您在紧凑的时间内用两笔划来完成一个手势!  ...

    Android Gesture手势源码

    在Android开发中,手势识别是增强用户交互体验的重要技术之一。`Android Gesture`是指通过用户的特定手指动作来触发相应的操作,比如滑动、点击、旋转等。本项目专注于手势识别,特别是针对数字0到9的手势进行识别。...

    自定义手势识别

    在Android开发中,手势识别是提升用户体验的重要技术之一。自定义手势识别允许开发者根据特定需求设计和实现用户交互的新方式,使应用更加直观和友好。本文将深入探讨Android中的手势识别,尤其是如何自定义手势。 ...

    Android程序研发源码Android 输入法手势程序源码.rar

    在Android平台上,输入法手势(Gesture)是一种便捷的交互方式,允许用户通过画出特定的手势来输入文字或执行操作。这份"Android程序研发源码Android 输入法手势程序源码.rar"提供了一套完整的Android输入法手势识别...

    android手势库识别

    Android手势库识别主要涉及的是如何让应用能够理解并响应用户的触摸动作,从而实现更直观、更便捷的交互方式。本教程适用于初学者,将深入探讨如何在Android应用中集成和使用手势库。 1. **手势库介绍** Android...

    Android 支持缩放、旋转、平移手势

    在Android开发中,手势识别是用户体验设计的重要组成部分,特别是对于触摸屏设备而言。"Android支持缩放、旋转、平移手势"这一主题涉及到Android手势识别系统的核心功能,它允许用户通过直观的手势来与应用程序进行...

    Android手势识别实例 仅用于手机输入法.rar

    Android手势识别实例 仅用于手机输入法,Himi提示:手势超过9个我做了删除所有手势的操作,为了界面整洁一些!输入法手势练习~(*^__^*)~ 嘻嘻!  操作介绍:1.(画手势我设置必须画两笔划才行哦~)添加手势:先...

    Android输入法手势程序源码.rar

    【标题】"Android输入法手势程序源码"指的是一个针对Android平台开发的输入法应用程序,其特色在于支持用户通过手势进行文字输入。这种输入方式通常更便捷,尤其在触摸屏设备上,用户可以通过画出特定的轨迹来输入...

    Qt for android触摸手势事件QGestureEvent

    在本文中,我们将深入探讨如何在Qt for Android环境中利用QGestureEvent处理触摸手势事件。Qt是一个跨平台的应用程序开发框架,支持多种操作系统,包括Android。它提供了丰富的功能,使开发者能够在移动设备上创建...

    Android Gesture Builder

    Android手势构建器(Gesture Builder)是Android开发工具集的一部分,用于帮助开发者创建和管理自定义的手势识别。在Android应用中,手势识别可以提升用户体验,让用户通过简单的滑动、点击等动作来执行特定的操作。...

    Android手势gesture和ImageView综合测试

    在Android开发中,手势识别(Gesture)和ImageView的结合使用是一项重要的技能,它能为用户提供更加直观、自然的交互方式。本项目“Android手势gesture和ImageView综合测试”提供了一个完整的工程,旨在帮助开发者...

    android开发--手势行为

    在Android开发中,手势行为(Gesture)是用户与应用程序交互的重要方式,它使得用户可以通过触摸屏幕的不同动作来触发相应的功能。本教程将深入探讨如何在Android应用中实现长按、短按、双击和单击等基本手势检测,...

    androidGesture_android_

    本文将深入探讨Android手势识别技术,并结合给定的“androidGesture_android_”项目实例,来阐述如何在Android应用中实现手势识别功能。 首先,Android的手势识别主要依赖于` GestureDetector`类,它是Android SDK...

    android手势启动源码

    在Android应用开发中,手势启动是一种提升用户体验的重要技术,它允许用户通过自定义的手势来快速启动特定的应用程序。这个“android手势启动源码”项目就是针对这一需求设计的,适用于中国大学生挑战赛中的Android...

Global site tag (gtag.js) - Google Analytics