Android 底层按键获取


微笑 好久没来更新文章了,因为没有找到自己的博客地址。。。我也说不清楚是怎么回事,几乎把所有的用户名密码都试过来了,就是没有找到,忽然间又找到了,神奇^-^

写的不好,但也不想就此荒芜,继续更新!希望对你有用。

         看这篇文章的同学们应该对getevent,sendevent这两个命令比较熟吧,我就不罗嗦了,还不熟悉的同学可以自己查一下。

一、Android中按键为什么需要进行转换?

    与用户交互的输入设备(触摸屏,键盘等)是获取用户意图的来源。由于硬件本身的物理特性及由各大硬件厂商的标准不一,这将导致我们从设备上获取到的键值存在一定的差异性,为了让系统能够正确处理用户的操作,我们就必须将从输入设备上获取到的键值正确转换为Android系统定义的键值以便正确处理。


二、Android中按键输入转换过程


扫描键码Scancode是由Linux 的input驱动定义的整形类型,扫描键码根据读取的kl配置文档内容的转化后,形成按键的标签KeycodeLaybel。按键的标签在经过数组KEYCODES的转换后形成keycode。应用程序对keycode进行处理。

    Android默认提供的按键布局文件主要包括qwerty.kl 和AVRCP.kl(/system/usr/keylayout/目录下)。Qwerty.kl为全键盘的布局文件,是系统中默认使用的布局文件,AVRCP.kl用于多媒体控制。

 

三、Linux中按键定义的数据结构

3.1 Linux中input_event结构体

(定义按键在 linux/input.h中)

struct input_event {

  struct timeval time; //按键时间

      __u16 type; //类型,在下面有定义

      __u16 code; //要模拟成什么按键

      __s32 value;//是按下还是释放

 };

1、Code

事件的代码.如果事件的类型代码是EV_KEY,该代码code为设备键盘代码.

代码值0~127为键盘上的按键代码,0x110~0x116 为鼠标上按键代码,

其中0x110(BTN_ LEFT)为鼠标左键,

0x111(BTN_RIGHT)为鼠标右键,

0x112(BTN_ MIDDLE)为鼠标中键.

如果事件的类型代码是EV_REL,code值表示轨迹的类型.如指示鼠标的X轴方向REL_X(代码为0x00),指示鼠标的Y轴方向REL_Y(代码 为0x01),指示鼠标中轮子方向REL_WHEEL(代码为0x08).

其它代码含义请参看include/linux/inp

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android中,可以通过设置按钮的样式来获取焦点。首先,在res文件夹下的values文件夹中创建一个新的xml文件,命名为button_style.xml。在该文件中,可以定义按钮的各种样式,包括按下效果、聚焦效果等。例如: ```xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <item android:drawable="@drawable/button_normal" /> </selector> ``` 上面的代中,定义了三个item,分别对应按钮的按下状态、聚焦状态和默认状态。根据需要,可以在drawable文件夹中创建相应的图片资源,比如button_pressed.png、button_focused.png和button_normal.png,并将其分别设置给相应的item。 接下来,在布局文件中设置按钮的样式。找到需要设置焦点样式的按钮,将其background属性指定为刚才创建的button_style.xml文件即可,例如: ```xml <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/button_style" android:text="Button" /> ``` 这样,当按钮被按下或者获得焦点时,会自动显示相应的样式。你可以根据实际需要修改样式文件和图片资源,来达到想要的焦点样式效果。 总结一下,为了设置按钮的焦点样式,需要创建一个selector文件,定义各种焦点状态对应的样式,并在布局文件中将按钮的background属性指定为该selector文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值