Android事件机制----KeyEvent

本文详细探讨了Android中的KeyEvent事件机制,包括事件类型和相关API,如KeyEvent和Activity的交互,并通过一个基础案例——连续点击BACK键退出应用,展示了keyEvent事件的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android事件机制—-KeyEvent

1、提出问题

1)Android是如何响应对其中的某个视图的操控操作呢?   

    ------>MotionEvent

2)Android是如何响应手机的按键操作呢?

    ------->KeyEvent

2、按键(KeyEvent)机制

(1)事件类型:

    down

    up

(2)相关API

.KeyEvent

int ACTION_DOWN = 0;标识down的常亮

int ACTION_UP = 1:标识up的常亮

int getAction():得到事件类型

int getKeyCode():得到按键的keycode(唯一标识)

startTracking():追踪事件,用于长按监听

.Activity

boolean dispatchKeyEvent(KeyEvent event):分发事件

boolean on KeyDown(int keyCode,KeyEvent event):按下按键的回调

boolean onKeyUp(int keyCode,KeyEvent event):松开按键的回调

boolean onKeyLongPress(int keyCode, KeyEvent event):长按键的回调

3、基础的应用案例

连续点击back退出应用(keyEvent事件)

        a、handler处理延迟消息

        b、keyEvent的处理
public class MainActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    private boolean exit = false;//标识是否可以退出
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            if(msg.what == 1){
                exit = false;
            }
        }
    };
    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if(event.getKeyCode()==KeyEvent.KEYCODE_BACK){
            if(!exit){//如果 exit = false 不退出
                exit = true;
                Toast.makeText(this,"再按一次退出",Toast.LENGTH_SHORT).show();
                handler.sendEmptyMessageDelayed(1,2000);//发送延迟消息
                return true;//不退出
            }

        }
        return super.onKeyUp(keyCode, event);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值