Android事件机制----KeyEvent

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

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);
    }
}

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值