按键处理
-----------------------------------------
按键通常指的是设备上的“物理”按键,(Android事件处理(event)分:按键处理和手势处理)。
在Activity中,重写onKeyDown()、onKeyUp()、onKeyLongPress()可以实现对按键的处理,这些方法的返回值都是boolean类型的,表示“是否消费事件”,在重写这些方法时,如果返回true,则“直接消费完成”,不会存在后续操作,如果返回false,则“未完全消费”,系统仍然会按照默认的按钮处理方式对事件进行处理。
Activity:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private long lastClickBackTimeMillis;
@Override
public boolean onKeyDown(
int keyCode, // 键的编码
KeyEvent event // 按键的事件
) {
// 判断按下的是不是返回键
if(keyCode == KeyEvent.KEYCODE_BACK) {//常量在event里面找
// 判断是否是连续按下
long currentClickBackTimeMillis = System.currentTimeMillis();
if(currentClickBackTimeMillis - lastClickBackTimeMillis > 1000) {
Toast.makeText(this, "再按1次退出应用程序", Toast.LENGTH_LONG).show();
lastClickBackTimeMillis = currentClickBackTimeMillis;
return true;//消费时间完成,如果条件成立,就不执行后面的activity
}
}
return super.onKeyDown(keyCode, event);//退掉activity,这是系统默认的。
}
}