当前位置:首页 » 安卓系统 » androidback键监听

androidback键监听

发布时间: 2023-07-26 10:43:45

A. android 在fragment中怎么监听返回键,home键

android 在fragment中如何监听返回键,home键
在activity中用keydown很容易实现对返回键的监听,但是这个函数不能再fragment中重载。
通过我呕心沥血的寻找,终于找到了解决办法,对其他物理按键的监听也同理。
public class phonerecorder extends Fragment {
View listview;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
listview = (View) inflater.inflate(R.layout.phonerecorder, null);
mListView = (ListView) listview.findViewById(R.id.listView);
init();
mListView.setOnItemClickListener(clickitemlistener);
listview.setFocusable(true);//这个和下面的这个命令必须要设置了,才能监听back事件。
listview.setFocusableInTouchMode(true);
listview.setOnKeyListener(backlistener);
return listview;
}
private View.OnKeyListener backlistener = new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (i == KeyEvent.KEYCODE_BACK) { //表示按返回键 时的操作
if (!rootpatch.equals(currentfilepach) && currentfilepach != null) {
File file = new File(currentfilepach);
openDir2(file.getParent().toString());
currentfilepach = file.getParent().toString();
return true;
} //后退
return false; //已处理
}
}
return false;
}
};
}

B. android 中怎么监听按键的长按事件

现在手机物理按键越来越少
常见的有 KEYCODE_VOLUME_DOWN/UP KEYCODE_POWER KEYCODE_BACK KEYCODE_HOME KEYCODE_MENU
在一个activity 重载父类 的下面这三个方法来处理按键事件
public boolean onKeyDown(int keyCode, KeyEvent event)
public boolean onKeyUp(int keyCode, KeyEvent event)
public boolean onKeyLongPress(int keyCode, KeyEvent event)
很明显,长按事件一般是放到 onKeyLongPress 函数中来处理的。

C. android 中按下返回键销毁activity的详细调用过程。 求大神解答。

java">	@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
//TODOAuto-generatedmethodstub
if(keyCode==KeyEvent.ACTION_DOWN){
MainActivity.this.finish();
returntrue;
}

returnsuper.onKeyDown(keyCode,event);
}
这个是按返回键就会销毁activity,双击销毁是判断你双击的点击事件间隔时间
小于300ms就销毁activity的

D. android检测返回键onBackPressed和onKeyDown区别

本篇文章介绍如何在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键可以通过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) {

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

@Override
public void onOptionsMenuClosed(Menu menu) {
super.onOptionsMenuClosed(menu);
Toast.makeText(this, "onOptionsMenuClosed clicked", Toast.LENGTH_SHORT)
.show();
}
经过笔者的测试,发生这些方法在高版本中可能出现不兼容的情况,关于菜单可以查看 Android中Menu菜单

原文地址: https://www.cnblogs.com/HDK2016/p/8695052.html#a1

热点内容
python的下载与安装 发布:2025-03-19 05:41:38 浏览:768
安卓怎么用手电筒检测换屏 发布:2025-03-19 05:30:33 浏览:671
苹果6怎么设置短密码 发布:2025-03-19 04:44:41 浏览:17
三人乐队怎么配置 发布:2025-03-19 04:34:42 浏览:914
趣编程入口 发布:2025-03-19 04:25:09 浏览:939
a的存储形式 发布:2025-03-19 04:24:00 浏览:789
android键盘修改 发布:2025-03-19 04:21:45 浏览:165
记录体温源码 发布:2025-03-19 04:14:06 浏览:895
安卓电池充电次数怎么查看 发布:2025-03-19 04:08:44 浏览:318
问解压 发布:2025-03-19 03:29:44 浏览:811