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
(2) 三星的camera强制切换到横屏 导致Activity重启生命周期 (但是部分机型 配置 android:configChanges 也不能阻止横竖屏切换); 我的解决方法为 如果 activity 的销毁如果无法避免 那么在activity销毁之前调用 ...
本项目是本站发布的第四个独数游戏源码,其实数独的规则很简单,顾名思义——数独中每个数字只能出现一次。数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,...
ie6BUG解决方案
android 串口测试demo 代码简单 无bug 完美运行 android 串口测试demo 代码简单 无bug 完美运行 android 串口测试demo 代码简单 无bug 完美运行 android 串口测试demo 代码简单 无bug 完美运行 android 串口测试demo...
完美解决Android录音bug,仿微信语音功能效果。。。。
的 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!!!!
这是我进行android定制开发工作,遇到的bug修改列表,包含linux,git,android framework,android app的相关问题。android版本包含android2.3,4.0,4.1,4.2等版本的bug修改和系统定制
ChkBugReport是一个用于分析android的bugreport的开源工具,它可以把你得到的bugreprot导出成适合阅读的html。导出的html文件包含了根据bugreport数据得出的图表和分析结论,主要包括进程内存占用信息、程序ANR或...
帮助你快速掌握如何分析android bugreport
Android drawable 玩转自定义图片以及bug的解决
此为XMPP android 信息推送,一位韩国写出来的,但有很多BUG ,此版本已修复好各种BUG ,各位也可以你们的业务逻辑作出相应的修改。 服务器版本的也上传了,各位有兴趣的也可以去下载看看。
Android游戏源码支持触屏和按键的推箱子是一个经典游戏-推箱子的安卓版本源码,界面做的比较简陋。试玩了一下只有两关没发现bug,如果想要开发推箱子的话可以借鉴里面的算法,游戏能后撤步骤,支持触屏或者按键操作...
android开发工作中遇到的经典问题,很多都是我自己总结和网上找到的一些问题的解决方法,也有很多bug的解决方案,拿出来分享,希望可以帮助到各位android开发
Android 拦截系统崩溃的程序,并自定义拦截后处理事件,防bug的神器 本来点击Button时会报错,处理过之后,3秒后会自动关闭并重启
微信小程序入门介绍(自制PPt)。本人已开发2款小程序,公司分享会,需要介绍小程序。固出此ppt介绍小程序入门,及自己遇到的坑,和一些小门路,存在的bug及解决方案。
bugreport 记录了android启动过程的log,以及启动后的系统状态,包括进程列表,内存信息,VM信息等等到。通过adb bugreport > bugreport.txt 可以将bugreport取到bugreport.txt中。
这里提供了两种解决方案。各有各的优势,请选取合适的方案: 一、弃用v-model,使用@input 适用于input组件单纯是用户手动输入的,而没有像授权获取手机号,然后自动填入input组件中。这种需要赋予初始value的情况。...
在开发中使用EditText时可能被软键盘遮挡布局,只需在布局中加入NestedScrollView 在对应的界面初始化 就可完美的解决.