【Android】Android实现监听返回键,主键(HOME),菜单键

您所在的位置:网站首页 安卓禁用底部三个按键 【Android】Android实现监听返回键,主键(HOME),菜单键

【Android】Android实现监听返回键,主键(HOME),菜单键

2024-06-06 00:48| 来源: 网络整理| 查看: 265

目录结构:

contents structure [+] 简介 监听 返回键 监听 主键(Home键) 监听 菜单键 一.简介

本篇文章介绍如何在Android中实现监听返回键,主键,菜单键。一般情况下,我们都可以在Android手机底部看到三个按钮,这三个按钮就分别是返回键,主键,菜单键。

接下来介绍监听这三个键的实现。

二.监听 返回键

第一种方法通过onBackPressed()方法来实现

/** * 注意: * super.onBackPressed()会自动调用finish()方法,关闭当前Activity. */ @Override public void onBackPressed() { super.onBackPressed(); Toast.makeText(this, "按下了back键 onBackPressed()", Toast.LENGTH_SHORT).show(); }

onBackPressed()提供的功能有限,它这是在退出之前通知onBackPressed()方法,并不能改变用户原来的行为

利用onKeyDown方法,就可以实现

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { Toast.makeText(this, "按下了back键 onKeyDown()", Toast.LENGTH_SHORT).show(); return false; }else { return super.onKeyDown(keyCode, event); } }

onKeyDown方法返回true表示退出,返回false便不退出。

还可以通过跳转来实现退出,

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); } return super.onKeyDown(keyCode, event); }

通过onKeyDown我们可以实现,实现“再按一次返回键退出程序”的功能

private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); System.exit(0); } return true; } return super.onKeyDown(keyCode, event); } 三.监听 主键(Home键)

监听Home键可以通过onUserLeaveHint()方法来实现,

@Override protected void onUserLeaveHint() { super.onUserLeaveHint(); Toast.makeText(this, "onUserLeaveHint", Toast.LENGTH_SHORT).show(); }

在这个方法中,我们可以观察出,如果onUserLeaveHint方法是不能改变用户的行为的。

四.监听 菜单键

在手机下方的三个键中,最右边的键就是菜单键,通常是用方括号表示的。经过笔者的测试发现,如果轻点一下,那么会跳出菜单界面,如果长点的话,那么会退出程序。这个过程会自动调用onUserLeaveHint方法,也就是主键。

菜单的监听也可以通过onKeyDown()方法来实现

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU) { Toast.makeText(this, "onkeyDown clicked", Toast.LENGTH_SHORT) .show(); super.openOptionsMenu(); // 调用这个,就可以弹出菜单 } return true; // 最后,一定要做完以后返回 true,或者在弹出菜单后返回true,其他键返回super,让其他键默认 }

处理上面这样的方法,onOptionsMenuClosed()方法也可以实现。

@Override public void onOptionsMenuClosed(Menu menu) { super.onOptionsMenuClosed(menu); Toast.makeText(this, "onOptionsMenuClosed clicked", Toast.LENGTH_SHORT) .show(); }

经过笔者的测试,发生这些方法在高版本中可能出现不兼容的情况,关于菜单可以查看 Android中Menu菜单

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3