8月 252020
 

本文基于Android8.1系统编写

一、背景

  今天想实现自定义的back和home键,比着葫芦画瓢,把back和home键的部局抄过来了。但怎么也没找到back和home键的java功能实现部分。

后来度娘了一下才找到实现的原理。

  参考链接:http://blog.chinaunix.net/uid-701715-id-3054850.html

  自己也记录一下

二、按钮的组件类KeyButtonView

  在部局中可以看到,back和home键用了一个自定义view,开始我还以为是为了实现按钮的动画效果才自定义了一个这个view,现在发现自己天真了!

  KeyButtonView的核心在于,他定义了一个可设置的部局属性keyCode,用于设置按钮对应的键,如下back键的部局代码:

  keyCode=”4″对应的为KeyEvent.KEYCODE_BACK键

  在KeyButtonView的构造函数中,读取并保存了这个属性:

  如此,在部局文件中设置的keyCode读到了类中

三、模拟发送按键

  原理是,拦截onTouch事件,当按钮按下时发送keyCode的ACTION_DOWN操作,当按钮弹开时发送keyCode的ACTION_UP操作,完成一次按键的操作。

  sendEvent函数,先构造KeyEvent对象,然后通过InputManager发送到系统,代码如下:

 

打赏
 Posted by on 2020-08-25

Sorry, the comment form is closed at this time.