怎么在安卓平台通过安卓返回键不退出程序退出游戏

2013年9月 移动平台大版内专家分月排行榜第二
2013年11月 移动开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。安卓手机返回键失灵解决办法_安卓教程_好卓网
安卓手机返回键失灵解决办法
安卓手机返回键
有很多的朋友在使用安卓手机的过程中会发现返回键失灵的情况,遇到这种情况还真是十分麻烦,那么到底有没有解决的办法呢。这里就为大家收集一些小技巧,希望对大家有帮助。
安卓手机返回键失灵简明教程:
方法:将搜索键功能更改为返回键
1.用高级权限管理器R.E.管理器到 SYSTEM/usr/keylayout/qwerty.kl 文件先导出到 /sdcard/下任意目录 备份
2.修改权限用文本编辑器方式打开 将KEY 127 SEARCH 修改为 KEY 127 BACK 保存并且退出。
3.最后关机取下电池。只有这样系统才会重新读取文件,不然前面所做的都是无效的,然后重新启动即可。
分享到其他平台:
从低端到高端,三星所出产的手机可谓说是很多的。近日,三星另外一款超豪华翻盖手机三星GALAXY Golden 3将在中国市场首发,据悉,这款手机上市之后,售价将会超过万元。
10月21日最新消息,大家期待已久的HTC One A9今天已经正式发布了。据悉,HTC One A9发布之后,将会在11月份的第一周正式上市开卖,届时大家可以在HTC官网,以及其他线上途径进行购买。
随着手机上装的资料越来越多,内存卡的容量也越发不可忽视,在购买手机内存卡的时候大家经常会问什么牌子的手机内存卡好,下面小编就为大家介绍一下当下内存卡市场格局。
发现手机内存卡无法格式化之后,许多人认为这张卡就报废了,其实既然电脑还能读取到这张卡,那我们还是能抢救一下的,下面就教大家手机内存卡格式化不了的解决方法。
一、ROM 特色 1. 应群机友的建议和帮助,保持官方原貌下增添部分实用APP编译,精致精简714M、【如果喜欢长期使用又简单的机油可以尝试下】 2. 官方10.5.A.0.233最终版本内核基带 3. 增加
一、ROM 特色 1. 移植Z3的有声照片 2. 移植Z3的的AR趣拍 3. 移植Z3的动态镜头 4. 移植Z3的最新相册 5. 移植Z3的超逼真 6. 移植Z3的XReality 7. 移植Z3的媒体声音 8. 移植Z3的主题和壁纸 9. 移植Z3的
装机必备软件
装机必备游戏程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Android研究院之游戏开发处理按键的响应(十二)
Android研究院之游戏开发处理按键的响应(十二)
围观7206次
编辑日期: 字体:
1.onKeyDown 方法
onKeyDown 方法是KeyEvent.Callback 接口中的一个抽象方法,重写onKeyDown 方法可以监听到按键被按下的事件,我们先看看onKeyDown方法的函数原型。
第一个参数为键值,手机中每一个按钮都拥有一个完全独立的键值 通过按键键值就可以确定当前按下的是那一个按键。
第二个参数为按键事件,
该对象中保存着当前按键的所有信息 比如 按键发生的时间 按键发生的次数
按键发生的类型等等。
通过以上两个参数就可以拿到当前按键事件的所附带的一切信息。
返回值 为true的时候表示完成了一次按键事件 这样回调方法就会处理一些事情,举一个简单的例子 我们在一个新activity中 代码中根本就没有重写onKeyDown这个方法可是点返回按钮的时候发现当前这个activity自己关闭了。这是为什么呢??
首先如果没有重写onKeyDown方法的话 父类就会默认调用自己的onKeyDown方法这样如果按下按键了父类就会返回true 所以回调方法系统会关闭当前activity ,如果说我们把onKeyDown的返回值直接写成false 这样系统就不知道你点击了返回键 回调方法也不会帮我们finish掉当前的activity。
&&&&@Override&&&&public boolean onKeyDown(int keyCode, KeyEvent event) {& return super.onKeyDown(keyCode, event);&&&&}
如果长按某一个按键的话 onKeyDown方法会反复调用 并不是只调用一次
直到松开该按键为止。
2.onKeyUp 方法
方法和 onKeyDown 同属于KeyEvent.Callback 接口中的一个抽象方法 ,重写onKeyUp
方法可以监听到按键被抬起的事件,当然抬起的前提肯定是先被按下后才会被抬起,也就是说onKeyUp
方法如果执行那也肯定是先执行过 onKeyDown 方法。我们先看看onKeyUp 的函数原型。
它和onKeyDown 方法的原理完全一样 连参数都一样, 区别就是一个处理按下事件 一个处理抬起时间。
&&&&@Override&&&&public boolean onKeyUp(int keyCode, KeyEvent event) {&&&&&&&&// TODO Auto-generated method stub&&&&&&&&return super.onKeyUp(keyCode, event);&&&&}
这里强调一下 由于android手机的种类越来越多所以不同厂商的手机的键值可能会不一样的,而且有些手机根本都没有按键
这样适配型就大打折扣,不可能每款手机都写以套代码吧,呵呵 ,所以现在普遍的游戏都是使用全触摸的形式在做开发,当然作为学习来说将我们可以先不管这个。
下面我给出一个简单demo说明一下
在View中须要监听按键的话必需在构造方法中给当前View 设置控制焦点 须要调用 setFocusable(true); 如果没有设置的话 onKeyDown 与onKeyUp 等跟按键有关的 永远无法监听到按键事件。 在onKeyDown 与onKeyUp 通过keyCode 的值就可以判断当前按下那一个按键 ,然后根据event 事件对象就可以拿到当前触发事件的时间等等。
代码中我在Activity 和View中同时重写onKeyDown 与onKeyUp方法,他们的调用顺序是先是调用自定义View中的 onKeyDown 与onKeyUp方法
然后才是 调用Activity中的onKeyDown 与onKeyUp方法,所以我们可以在相应的方法中做出相应的事情。
在按键监听的这个activity中点击返回键
因为它重写方法 onKeyDown 与onKeyUp 所以返回值 会调用父类onKeyDown方法
return super.onKeyDown(keyCode, event); 这样的话父类就会返回true 所以系统拿到返回事件后就直接帮我们把activity关闭掉了,如果把这一句改成false 我们当前的这个activity就不会被系统finish掉除非我们自己手动finish掉。 所以可以通过设置返回值的方式来拦截按键信息喔。
postInvalidate(); 方法就是通知UI线程重绘 也就是说我们调用 postInvalidate();
后 紧接着系统就会调用onDraw方法来刷新屏幕。
下面贴出代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
package cn.m15.xys;&import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.Window;import android.view.WindowManager;&public class SurfaceViewAcitvity extends Activity {&&&&&AnimView mAnimView = null;&&&&&@Override&&&&public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 全屏显示窗口 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN); // 显示自定义的游戏View mAnimView = new AnimView(this); setContentView(mAnimView);&&&&}&&&&&public class AnimView extends View {&
String mKeyDownEvent = "点击键盘方向键";
String mKeyDownTime = "";
String mKeyUpEvent = "";
String mKeyUpTime = "";&
Paint mPaint = null;
* 构造方法
* @param context
*/ public AnimView(Context context) { &&&&super(context); &&&&mPaint = new Paint(); &&&&/**设置控制焦点 **/ &&&&setFocusable(true); }& @Override protected void onDraw(Canvas canvas) { &&&&/**显示内容**/ &&&&mPaint.setColor(Color.WHITE); &&&&canvas.drawText(mKeyDownEvent, 100, 20, mPaint); &&&&canvas.drawText(mKeyDownTime, 100, 40, mPaint); &&&&canvas.drawText(mKeyUpEvent, 100, 60, mPaint); &&&&canvas.drawText(mKeyUpTime, 100, 80, mPaint); &&&&super.onDraw(canvas); }& @Override public boolean onKeyDown(int keyCode, KeyEvent event) { &&&&switch (keyCode) { &&&&case KeyEvent.KEYCODE_DPAD_UP:
mKeyDownEvent = "按下了上键";
break; &&&&case KeyEvent.KEYCODE_DPAD_DOWN:
mKeyDownEvent = "按下了下键";
break; &&&&case KeyEvent.KEYCODE_DPAD_LEFT:
mKeyDownEvent = "按下了左键";
break; &&&&case KeyEvent.KEYCODE_DPAD_RIGHT:
mKeyDownEvent = "按下了右键";
break; &&&&case KeyEvent.KEYCODE_DPAD_CENTER:
mKeyDownEvent = "按下了中键";
break; &&&&case KeyEvent.KEYCODE_1:
mKeyDownEvent = "按下了数字键1";
break; &&&&case KeyEvent.KEYCODE_3:
mKeyDownEvent = "按下了数字键2";
break; &&&&case KeyEvent.KEYCODE_7:
mKeyDownEvent = "按下了数字键7";
break; &&&&default:
mKeyDownEvent = String.valueOf(keyCode);
break; &&&&} &&&&mKeyDownTime = "触发当前事件的时间为" + event.getEventTime(); &&&&/**通知UI线程重绘**/ &&&&postInvalidate(); &&&&return super.onKeyDown(keyCode, event); }& @Override public boolean onKeyUp(int keyCode, KeyEvent event) { &&&&switch (keyCode) { &&&&case KeyEvent.KEYCODE_DPAD_UP:
mKeyUpEvent = "抬起了上键";
break; &&&&case KeyEvent.KEYCODE_DPAD_DOWN:
mKeyUpEvent = "抬起了下键";
break; &&&&case KeyEvent.KEYCODE_DPAD_LEFT:
mKeyUpEvent = "抬起了左键";
break; &&&&case KeyEvent.KEYCODE_DPAD_RIGHT:
mKeyUpEvent = "抬起了右键";
break; &&&&case KeyEvent.KEYCODE_DPAD_CENTER:
mKeyUpEvent = "抬起了中键";
break; &&&&case KeyEvent.KEYCODE_1:
mKeyUpEvent = "抬起了数字键1";
break; &&&&case KeyEvent.KEYCODE_3:
mKeyUpEvent = "抬起了数字键2";
break; &&&&case KeyEvent.KEYCODE_7:
mKeyUpEvent = "抬起了数字键7";
break; &&&&default:
mKeyUpEvent = String.valueOf(keyCode);
break; &&&&}& &&&&mKeyUpTime = "触发当前事件的时间为" + event.getEventTime(); &&&&/**通知UI线程重绘**/ &&&&postInvalidate(); &&&&return super.onKeyUp(keyCode, event); }&&&&}&&&&&@Override&&&&public boolean onKeyDown(int keyCode, KeyEvent event) {& return super.onKeyDown(keyCode, event);&&&&}&&&&@Override&&&&public boolean onKeyUp(int keyCode, KeyEvent event) {&&&&&&&&// TODO Auto-generated method stub&&&&&&&&return super.onKeyUp(keyCode, event);&&&&}}
总体来说这章内容还是比较简单的,老规矩每篇文章都会附带源代码,最后如果你还是觉得我写的不够详细 看的不够爽 不要紧我把源代码的下载地址贴出来 欢迎大家一起讨论学习雨松MOMO希望可以和大家一起进步。
下载地址:
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!今日论坛第 1 个签到,每日签到可得财富值+2,连续5天签到后再连续签到则每日可得财富值
+4,记得每天都来签到哦~
上一主题:
下一主题:
查看: 11224 | 回复: 11
听说安卓的应用程序都没有退出功能?那个键盘上得返回按钮是退出的意思吗?
UID 8585263
财富值 2716
交易信用 0
积分/帖子:1925
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
听说安卓的应用程序都没有退出功能?那个键盘上得返回按钮是退出的意思吗?
我打开了几个程序,不想用了,就直接按得最右边那个键,按了之后是退出了还是后台了啊:?后台的话怎么调出来呢
还有看到有人说安卓的程序都没有退出功能,是程序自动控制的,在后台的话基本不消耗电量,说安卓的这个机制很好
财富值 321
交易信用 0
积分/帖子:260
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
表示 不知道
交易信用 0
积分/帖子:28
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
我昨天才买的
我昨天才买的,有的按返回好像是退出了,有的按菜单有退出选项,比如天天动听UC浏览器等等
UID 6301210
交易信用 0
积分/帖子:17
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
我也想知道[s:26]
财富值 232
交易信用 0
积分/帖子:240
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
有不支持后台运行的返回表示退出,未按返回的直接到其他程序的,程序到到一定数量或时间长了会自动退出。有些下载回来的按功能键有退出提示,
财富值 842
交易信用 0
积分/帖子:850
连续签到天数:1
全部签到天数:1
注册时间:
手机型号:
状态: 离线
好像QQ就没有退出键啊
美不美,看大腿;
靓不靓,看脸蛋;
要不要,看臀部翘不翘;
干不干,看胸部涨不涨。
交易信用 0
积分/帖子:63
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
QQ UC 安全管家 优化大师 这些比较主流的在功能键里都是有退出的
如果一个程序你不想退出又想后台的话,可以不按返回 按主界面(小房子那个按键)或者功能键 就可以了
UID 6806630
财富值 102
交易信用 0
积分/帖子:146
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
UID 9908648
财富值 964
交易信用 0
积分/帖子:842
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
现在相当多的程序是可以按两次返回键退出的,比如安卓优化大师。另外很多程序按中间的菜单键,里面有退出的。
而有一些没有退出键的,这无所谓的。安卓的内存管理机致和我们所熟知的WIN或是塞班是不一样的。所以我们并没有必要去追求很大的空余内存。基本上,如果内存中有程序存在了,它会被挂起来,它是停止的(除非被注册成服务,比如来电通、天天动听之类的但这类一般都有足够的理由或是有退出功能),基本上是不耗电的,而如果你想再用它时再次进入,因为内存中已经有了,所以载入速度飞快。这种机致是非常优秀的。它不同于后台,因为它是停止的,所以虽然它占着内存,但是这个内存是随时可能被收回的,一般以它的优先等级来定。 并且程序运行时是在一个单独的虚拟机中运行的,哪怕某个程序出错了,它也不会影响到其它的程序更不容易使系统崩溃。这类似于LUNIX的机致,所以象V880的稳定性理论上就优越于塞班,事实上也是这样的。另外也有一些内存清理软件,是可以强致把一些在内存中的程序清掉。但这不是必须的,除非你需要运行一个很大的游戏。比如植物大战僵尸之类的。事实上只要你的内存足够装入游戏,那么你清不清都一样,如果内存吃紧,安卓会自己去收掉一些空间,这也是为什么有时QQ之类的不能后台的原因。
财富值 136
交易信用 0
积分/帖子:142
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
以U880来说直接按返回键,有些程序会弹出是不是要退出程序。
但是有些程序按返回键他会变成后台,想要关闭的话在程序中按MENU这个键,会弹出几个选项,其中就有退出程序。
交易信用 0
积分/帖子:99
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
NOKIA6700S
来自:安徽
状态: 离线
点击最上面的指标栏向下划&&就出现后台程序了
UID 5581391
财富值 7495
交易信用 0
人气值 172
积分/帖子:6239
连续签到天数:2
全部签到天数:202
注册时间:
手机型号:
安卓iphons 4s
状态: 离线
[s:24] [s:24]
微信扫一扫关注dospy}

我要回帖

更多关于 ionic 安卓返回键退出 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信