开发过程中遇到android webview 自动获取焦点 设置 android:focusable="false" 以及父布局设置 android:focusable="true"android:focusableInTouchMode="true" 均不起作用,webview无输入框等获取焦点控件暂时不知道为什么能够自动获取焦点,且不会相应遥控器DOWN按键。解决办法是 重写dispatchKeyEvent() 拦截遥控器点击事件。

 

 @Override    public boolean onKeyUp(int keyCode, KeyEvent event) {        // TODO Auto-generated method stub        switch (keyCode) {            case KeyEvent.KEYCODE_ENTER:     //确定键enter            case KeyEvent.KEYCODE_DPAD_CENTER:                Log.d(TAG, "enter--->");//                showOption();                break;            case KeyEvent.KEYCODE_BACK:    //返回键                Log.d(TAG, "back--->");//                showExitDialog();                return true;   //这里由于break会退出,所以我们自己要处理掉 不返回上一层            case KeyEvent.KEYCODE_SETTINGS: //设置键                Log.d(TAG, "setting--->");                break;            case KeyEvent.KEYCODE_DPAD_DOWN:   //向下键                /*    实际开发中有时候会触发两次,所以要判断一下按下时触发 ,松开按键时不触发                 *    exp:KeyEvent.ACTION_UP                 */                Log.d(TAG, "down1--->");                if (event.getAction() == KeyEvent.ACTION_DOWN) {                    Log.d(TAG, "down1--->");                }                break;            case KeyEvent.KEYCODE_DPAD_UP:   //向上键                Log.d(TAG, "up--->");                break;            case KeyEvent.KEYCODE_0:   //数字键0                Log.d(TAG, "0--->");                break;            case KeyEvent.KEYCODE_DPAD_LEFT: //向左键                Log.d(TAG, "left--->");                break;            case KeyEvent.KEYCODE_DPAD_RIGHT:  //向右键                Log.d(TAG, "right--->");                break;            case KeyEvent.KEYCODE_INFO:    //info键                Log.d(TAG, "info--->");                break;            case KeyEvent.KEYCODE_PAGE_DOWN:     //向上翻页键            case KeyEvent.KEYCODE_MEDIA_NEXT:                Log.d(TAG, "page down1--->");                break;            case KeyEvent.KEYCODE_PAGE_UP:     //向下翻页键            case KeyEvent.KEYCODE_MEDIA_PREVIOUS:                Log.d(TAG, "page up--->");                break;            case KeyEvent.KEYCODE_VOLUME_UP:   //调大声音键                Log.d(TAG, "voice up--->");                break;            case KeyEvent.KEYCODE_VOLUME_DOWN: //降低声音键                Log.d(TAG, "voice down1--->");                break;            case KeyEvent.KEYCODE_VOLUME_MUTE: //禁用声音                Log.d(TAG, "voice mute--->");                break;            case KeyEvent.KEYCODE_HOME://房子                Log.d(TAG, "-----房子-----");                break;            case KeyEvent.KEYCODE_MENU://菜单                Log.d(TAG, "-----菜单-----");                break;            default:                break;        }        return super.onKeyUp(keyCode, event);    }

 

/** * 监听遥控器按键事件,交由系统处理 */@Overridepublic boolean dispatchKeyEvent(KeyEvent event) {    // TODO Auto-generated method stub    if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT            || event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP            || event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT            || event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN) {        return true;    }    return super.dispatchKeyEvent(event);}

更多相关文章

  1. Android(安卓)开发入门
  2. android关机充电流程及关机充电时的画面显示
  3. 深入浅出 - Android系统移植与平台开发(七)- Android系统的启动
  4. Android基本操作1(意图使用、界面转换、按键操作、文本传递)
  5. android待机详细结合代码分析(二)
  6. Android(安卓)模拟MotionEvent事件 触发输入法
  7. Android:GestureDetector手势识别类
  8. Android(安卓)Gesture Detector
  9. Android触摸屏幕时间-android学习之旅(三)

随机推荐

  1. php编译安装扩展redis及swoole
  2. php的闭包是干嘛的
  3. php中use的用法是什么
  4. php的注释方法
  5. 解决php运行超时的方法
  6. php页面传值的方法
  7. 有关PHP中PDO连接数据库的详细教程与实际
  8. php中缓存的种类
  9. php访问数据库的过程
  10. php usort()函数的使用方法