安卓开发学习12-2:Android事件处理和手势:物理按键事件处理

物理按键

在这里插入图片描述

物理按键的三种状态

  • onKeyDown:按下物理按键
  • onKeyUp:松开物理按键
  • onKeyLongPress:长按
    在这里插入图片描述

物理按键所对应的常量

上述监听第三个监听状态的方法,是通用的基于回调的事件处理,也就是所有物理按键的按下和松开都会触发上述的onKeyDown和onKeyUp方法

安卓系统中提供了对应的常量来区分不同的物理按键

  • 音量上、下:KEYCODE_VOLUME_UP、KEYCODE_VOLUME_DOWN
  • 电源键:KEYCODE_POWER
  • 返回键:KEYCODE_BACK
  • 主屏键:KEYCODE_HOME
  • 菜单键:KEYCODE_MENU

实例

1、需求:实现点击两次返回键退出程序

2、MainActivity.java

package com.example.study2;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;

import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    public Long exitTime = 0L;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

//  按键监听
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if(keyCode == KeyEvent.KEYCODE_BACK){
            exit();
//          返回true,停止默认行为,例如返回键默认行为就是返回上一层,如果是主页面,那么按返回键就是退出程序
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    public void exit(){
//      在1秒内再一次按返回键就退出程序
        if(System.currentTimeMillis() - exitTime > 1000){
            Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        }else{
//          退出当前Activity
            finish();
//          程序正常退出
            System.exit(0);
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值