?这个其实很简单,就是获取用户的按键操作,按一次,我放到ArrayList,点击菜单的时候,我比对一下顺序是否正确
以下组合键顺序,上? -->? 下? -->? ?左? -->? 右? --->? 菜单,跳转至设置主页
private ArrayList<Integer> key_composite = new ArrayList<Integer>();
//焦点监听
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//初始化按键顺序
ArrayList<Integer> composite = new ArrayList<Integer>(Arrays.asList(KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.KEYCODE_MENU));
//遍历一下按键的,这个是给你调试的,不需要删掉就行
// for (Integer tmp_composite : composite) {
// Log.e("tmp_composite:", tmp_composite.toString());
// }
if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
//按上键的时候,清除key_composite,用户此时可能要开始搞事情了
key_composite.clear();
Log.e("KEYCODE_DPAD_UP:", String.valueOf(KeyEvent.KEYCODE_DPAD_UP));
//触发一次
key_composite.add(KeyEvent.KEYCODE_DPAD_UP);
return false;//写false的意思是不要拦截
}
if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
Log.e("KEYCODE_DPAD_DOWN:", String.valueOf(KeyEvent.KEYCODE_DPAD_DOWN));
//触发一次
key_composite.add(KeyEvent.KEYCODE_DPAD_DOWN);
return false;
}
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
Log.e("KEYCODE_DPAD_LEFT:", String.valueOf(KeyEvent.KEYCODE_DPAD_LEFT));
//触发一次
key_composite.add(KeyEvent.KEYCODE_DPAD_LEFT);
return false;
}
if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
Log.e("KEYCODE_DPAD_RIGHT:", String.valueOf(KeyEvent.KEYCODE_DPAD_RIGHT));
//触发一次
key_composite.add(KeyEvent.KEYCODE_DPAD_RIGHT);
return false;
}
if (keyCode == KeyEvent.KEYCODE_MENU) {
Log.e("KEYCODE_MENU:", String.valueOf(KeyEvent.KEYCODE_MENU));
//触发一次
key_composite.add(KeyEvent.KEYCODE_MENU);
for (Integer tmp_key_composite : key_composite) {
Log.e("tmp_key_composite:", tmp_key_composite.toString());
}
if (composite.equals(key_composite)) {
//如果相同,就
Intent intent = new Intent(Settings.ACTION_SETTINGS);//跳转系统设置界面
startActivity(intent);
} else {
key_composite.clear();
}
return false;
}
//matrix版本返回按键处理
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = getIntent();
finish();
startActivity(intent);
key_composite.clear();
return true;
}
return super.onKeyDown(keyCode, event);
}
|