`
java886o
  • 浏览: 41169 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!

 
阅读更多

Himi 原创, 欢迎转载,转载请在明显处注明! 谢谢。

原文地址:http://blog.csdn.net/xiaominghimi/archive/2010/12/29/6104731.aspx

我们先讲解在触屏事件处理中我们需要改进的bug!然后再给出如何禁止横屏和竖屏切换!以及切换的过程在android os 中是怎样的。

先看一段代码:


代码很简单,一个是处理实体按键的响应时间,另一个是触屏的响应事件、那么这里要说的有两点:

第一点:

在surfaceview中我们的onKeyDown 虽然是重写了view的函数,但是仍然需要在初始化的时候去声明获取焦点,setFocusable(true); 如果不调用此方法,那么会造成按键无效。原因是因为如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用.

第二点:

也是今天主要需要讲得的触屏响应的函数,onTouchEvent()! 重写此函数的时候默认最后一句是依照基类的返回方式,return super.onTouchEvent(event); 然后我们在其中去判定MotionEvent.ACTION_MOVE、MotionEvent.ACTION_DOWN、MotionEvent.ACTION_UP 相对应触屏操作的 拖动、按下、抬起;对此一切都是正确的,但是真正的的运行起项目的时候发现Log.v("Himi", "ACTION_MOVE"); 这里log的"ACTION_MOVE",永远不会执行!!!为此我找到了解决方法,那么先解释下为什么会出现此类情况。

解释:

onTouchEvent(),预设使用Oeverride这个方法,通常情況下去呼叫super.onTouchEvent()并传回布林值。但是这里要注意一点,预设如果去呼叫super.onTouchEvent()則很有可能super里面并没做任何事,并且回传false回來,一旦回传false回來,很可能后面的event (例如:Action_Move、Action_Up) 都会收不到了,所以为了确保保后面event能順利收到,要注意是否要直接呼super.TouchEvent()。


例如:


这个例子是当你Touch Down的时候会送event進來,接著印出Log,然后呼叫super的onTouchEvent()并回传布林值。此时会回传false,并且之后再也收不到Touch Move或Touch Up的event,為了要确保能收到event,必須要回传true,所以在这里要注意一下。

这个问题也是当时用到此函数的时候发现的,找了很多资料才找到其解释、所以以后使用onTouchEvent()函数的时候最后的

return super.onTouchEvent(event);

一定要改

return true;

最后还要注意一点:在初始化的时候不要忘记setFocusableInTouchMode(true);触屏模式获取焦点,比较类似setFocusable(true);

——setFocusable(true);//此方法是用来响应按键!如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用.

这里讲下如何禁止横屏和竖屏切换!

在某些游戏中我们可能需要禁止横屏和竖屏切换,其实实现这个要求很简单,只要在

AndroidManifest.xml里面加入这一行android :screenOrientation="landscape "(landscape 是横向,portrait 是纵向)。

在android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。在activity加上android:configChanges="keyboardHidden|orientation"属性,就不会重启activity.而是去调用onConfigurationChanged(Configuration newConfig). 这样就可以在这个方法里调整显示方式.

MainActivity中:


AndroidManifest.xml中:



分享到:
评论

相关推荐

    【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!.pdf

    【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!.pdf

    Android相机 解决三星bug版本

    (2) 三星的camera强制切换到横屏 导致Activity重启生命周期 (但是部分机型 配置 android:configChanges 也不能阻止横竖屏切换); 我的解决方法为 如果 activity 的销毁如果无法避免 那么在activity销毁之前调用 ...

    Android游戏源码界面美观无BUG数独游戏

    本项目是本站发布的第四个独数游戏源码,其实数独的规则很简单,顾名思义——数独中每个数字只能出现一次。数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,...

    ie6BUG解决方案

    ie6BUG解决方案

    android 串口测试demo 代码简单 无bug 完美运行

    android 串口测试demo 代码简单 无bug 完美运行 android 串口测试demo 代码简单 无bug 完美运行 android 串口测试demo 代码简单 无bug 完美运行 android 串口测试demo 代码简单 无bug 完美运行 android 串口测试demo...

    Android 解决录音bug

    完美解决Android录音bug,仿微信语音功能效果。。。。

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    bug tracker system!!!!

    bug tracker system!!!!bug tracker system!!!!bug tracker system!!!!bug tracker system!!!!bug tracker system!!!!bug tracker system!!!!

    androidBug修改总结

    这是我进行android定制开发工作,遇到的bug修改列表,包含linux,git,android framework,android app的相关问题。android版本包含android2.3,4.0,4.1,4.2等版本的bug修改和系统定制

    Android分析Bugreport开源工具

    ChkBugReport是一个用于分析android的bugreport的开源工具,它可以把你得到的bugreprot导出成适合阅读的html。导出的html文件包含了根据bugreport数据得出的图表和分析结论,主要包括进程内存占用信息、程序ANR或...

    android bugreport 分析

    帮助你快速掌握如何分析android bugreport

    Android drawable 玩转自定义图片以及bug的解决

    Android drawable 玩转自定义图片以及bug的解决

    Android 信息推送,史上最完美BUG! android 推送客户端

    此为XMPP android 信息推送,一位韩国写出来的,但有很多BUG ,此版本已修复好各种BUG ,各位也可以你们的业务逻辑作出相应的修改。 服务器版本的也上传了,各位有兴趣的也可以去下载看看。

    Android游戏源码支持触屏和按键的推箱子.rar

    Android游戏源码支持触屏和按键的推箱子是一个经典游戏-推箱子的安卓版本源码,界面做的比较简陋。试玩了一下只有两关没发现bug,如果想要开发推箱子的话可以借鉴里面的算法,游戏能后撤步骤,支持触屏或者按键操作...

    android开发总结文档

    android开发工作中遇到的经典问题,很多都是我自己总结和网上找到的一些问题的解决方法,也有很多bug的解决方案,拿出来分享,希望可以帮助到各位android开发

    Android 拦截系统崩溃的程序,并自定义拦截后处理事件,防bug的神器

    Android 拦截系统崩溃的程序,并自定义拦截后处理事件,防bug的神器 本来点击Button时会报错,处理过之后,3秒后会自动关闭并重启

    微信小程序跳坑指南,存在的bug及解决方案(自制PPt)

    微信小程序入门介绍(自制PPt)。本人已开发2款小程序,公司分享会,需要介绍小程序。固出此ppt介绍小程序入门,及自己遇到的坑,和一些小门路,存在的bug及解决方案。

    android bugreport

    bugreport 记录了android启动过程的log,以及启动后的系统状态,包括进程列表,内存信息,VM信息等等到。通过adb bugreport > bugreport.txt 可以将bugreport取到bugreport.txt中。

    详解小程序输入框闪烁及重影BUG解决方案

    这里提供了两种解决方案。各有各的优势,请选取合适的方案: 一、弃用v-model,使用@input 适用于input组件单纯是用户手动输入的,而没有像授权获取手机号,然后自动填入input组件中。这种需要赋予初始value的情况。...

    AndroidBug5497Workaround.java

    在开发中使用EditText时可能被软键盘遮挡布局,只需在布局中加入NestedScrollView 在对应的界面初始化 就可完美的解决.

Global site tag (gtag.js) - Google Analytics