Android中的多点触控软键盘功能

时间:2015-03-31 17:54:09

标签: android keyboard

我正在Android中开发键盘(特别是盲文键盘)。对于那些不知道的人,盲文由六个点组成,这些点的组合形成符号。我使用带有基本监听器的KeyboardView类编写了一个键盘,但问题是:默认监听器只允许一次按下一个键。要形成字母l,需要三个点(点1,2和3)。我必须单独按下每个键,然后用空格键写下这封信。我希望键盘以不同的方式运行;可以同时按下所有点,当释放点时,会写入字母。 在与KeyboardView捆绑的监听器认为这是不可能的时候,我是对的吗?如果我在KeyboardView中重写onTouch例程,那后面的功能是否可行? OnTouch功能是否同时检测多个action_down事件?我想如果这是可能的,我可以确定印刷机的x-y坐标,循环键盘上的键,并确定正在按下哪些键。如果这是不可能的,我是否必须在此下面一步并写onTouch以获得基本视图? 非常感谢你。

1 个答案:

答案 0 :(得分:3)

如果你想对键盘进行一些快速测试,比如新的键布局或新的预测文本算法,那么KeyboardView就可以了。如果您正在做任何更复杂的事情,KeyboardView并没有任何真正的灵活性。没有一个主要的键盘使用它(我知道,我肯定写了其中一个,并与其他人的工程师交谈过。)

您可以在现有键盘视图上重写onTouch或触摸侦听器,但是您必须在其框架内执行大量工作,例如命中测试以确定触摸了哪个键。那时,从头开始编写自己的东西可能更容易。如果你一直走向商业产品,我几乎可以保证你会在某个时候。

你可以使用onTouch让多个手指向下,但它不会在ACTION_DOWN上。你得到第一个手指的ACTION_DOWN,然后是每个额外手指的ACTION_POINTER_DOWN。这是它适用于任何视图的方式。然后任何手指上的任何动作都会产生ACTION_MOVE。当手指被释放时,所有手指都会获得ACTION_POINTER_UP,直到最后一个手指获得ACTION_UP。