ontouchevent与onkeydown监听事件,dialog的setOnKeyListener的监听key手机返回键
来源:互联网 发布:淘宝看在线人数的插件 编辑:程序博客网 时间:2024/05/21 20:46
先讲 dialog的setOnKeyListener的监听key手机返回键
tipsDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
if(haveDialog){
haveDialog=false;
tipsDialog.dismiss();
context.finish();
}
}
return false;
}
});
有时候dialog弹出来的时候按下返回键不想单单处理弹出框消失或者不想弹出框消失,
都是在这里进行监听处理的。可以同时完成弹出框消失和activity的退出。
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
return true;
case MotionEvent.ACTION_POINTER_UP:
return true;
case MotionEvent.ACTION_POINTER_DOWN:
return true;
case MotionEvent.ACTION_MOVE:
return true;
}
return super.onTouchEvent(event);
}
public boolean onKeyDowne(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
return true;
case KeyEvent.KEYCODE_DPAD_DOWN:
return true;
case KeyEvent.KEYCODE_DPAD_LEFT:
return true;
case KeyEvent.KEYCODE_DPAD_RIGHT:
return true;
}
return super.onKeyDown(keyCode, event);
}
onTouchEvent API中的解释:Implement this method to handle touch screen motion events.就是用来处理屏幕触摸事件。对于返回值的处理,看到有篇博客中说只要是自己写了就要返回return true;感觉有点不巧当,这样就是告诉系统所有的我都已经自己处理了,但是我们可能只处理了一部分,所以比较好的做法是:对于自己处理的return true;而对于自己没有处理的交给系统处理return super.onTouchEvent(event);
在初始化的时候不要忘记setFocusableInTouchMode(true);触屏模式获取焦点,比较类似 setFocusable(true);
setFocusable(true);//此方法是用来响应按键!如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用.
onKeyDown API中的解释:Default implementation of KeyEvent.Callback.onKeyDown(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.也就是用来响应物理按键的。
在surfaceview中我们的onKeyDown 虽然是重写了view的函数,但是仍然需要在初始化的时候去声明获取焦点,setFocusable(true); 如果不调用此方法,那么会造成按键无效。原因是因为如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用.
这里讲的如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用很重要,当你自定义surfaceview,要进行处理onkeydown的时候必须要 setFocusable(true);
public EndlessMode(Context context, List<Element> list) {
super(context);
this.context = (EndlessActivity) context;
elementList = new ArrayList<Element>();
elementList.addAll(list);
sfh = this.getHolder();
language = Locale.getDefault().getLanguage();
sfh.addCallback(this);
setFocusable(true);
this.gamemode=this.context.gamemode;
}
看看构造函数里面必须要写不然按键失效
- ontouchevent与onkeydown监听事件,dialog的setOnKeyListener的监听key手机返回键
- Fragment监听返回键(Fragment响应Activity的onKeyDown事件)Kotlin版
- 监听手机浏览器的返回按钮事件
- Android 返回键取消dialog的监听
- Android中的几个onTouch()事件、onKeyDown监听返回键无效
- Dialog的相关监听事件
- onTouchEvent onKeyDown事件的处理
- Dialog与返回键onKeyDown
- webview中利用onKeyDown监听物理按键返回的问题
- DialogFragment 监听按键事件的方法(onkeydown)
- Android onKeyDown监听返回键无效
- Android onKeyDown()监听返回键无效
- Android onKeyDown监听返回键无效
- 当dialog弹出时如何监听系统的返回键
- 返回键的监听
- 返回键的监听
- 返回键的监听
- 监听手机返回键
- 正则表达式中^/$和i、m、g的使用
- another app is currently holding the yum lock;waiting for it to exit解决
- IOS版添加phonegap--支付宝2.0快捷支付插件教程
- Win7 64 .Net开发问题总结(1)
- spring多数据源配置
- ontouchevent与onkeydown监听事件,dialog的setOnKeyListener的监听key手机返回键
- 强化美食生态布局,好豆打造私厨电商
- 运动会分数统计系统开发(第一版)
- 一、git基本常用操作
- C库函数 - fseek()
- 时间与果实
- FLV科普7 FLV时间戳计算
- 文章标题
- JAVA-中介者设计模式