Android R中虚拟按键的详细设计与实现

 

 

 

 

 

 

Android R中虚拟按键的详细设计与实现

虚拟按键被Google设计在SystemUi当中,他的入口是NavigationBarFragment.java类。在Google的设计中,虚拟按键并不是在驱动测直接上报,而是利用触屏事件转化为按键事件,然后将这些事件当成实体按键去处理。这种设计用很小的性能、功耗换功能的设计是存在一定的缺陷的。

整个虚拟按键的原理描述如下:在systemUI加载中向系统中添加了虚拟按键的窗口,在窗口中加载了对应的按钮布局。当用手指点击HOME键区域时,系统会将触屏事件,通过驱动写入的dev/input下。系统通过InputReader和InputDispathcer对触屏事件进行分发。直到事件分发给对应的KeyButtonView的onTouchEvent中,在该方法中利用IMS调用InputDispathcer的inject的注入事件的接口,将HOME、BACK、菜单等按键,注入到系统中,进行二次分发,将具体事件进行消费。

 

整个虚拟按键的创建和添加是从base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java开始的,在这个类中最终调用了createNavigationBar方法。

在base/packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java的createNavigationBar方法中创建了NavigationBarFramgment如下图所示:

这是一个继承自LifecycleFragment的Fragment。在这里面定义了手势和虚拟按键的模式。以及虚拟按键背景透明度变化等情况,base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java。如下图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值