在 Android 中禁用触摸(只允许手写笔)
Disabling touch in Android (only allowing stylus)
我正在为平板电脑编写一个 Android 5.1 应用程序,我能够在 MotionEvent
对象的帮助下区分触摸和手写笔输入。
是否可以只允许触控笔输入(即触摸应该没有效果)?
不确定是否有更好的方法,但您可以创建自定义视图,将其放在布局的最顶部(使其占据整个宽度和高度,以便覆盖整个区域)。仅查看的工作是处理输入和 "consume" 所有你想过滤掉的运动事件(即这些不是来自手写笔)通过将它们标记为已处理,并忽略所有其他的,允许框架通过你的视图传播由其他视图定期处理的层次结构。
编辑
最简单的实现方式是使您的视图扩展现有但简单的内容,例如。 FrameLayout
或 Space
(这样您就不需要打扰所有的测量内容)并覆盖 onTouchEvent()
以过滤所有输入。如果您不想传递此内容,请在此处 returning true
将其 "consume",否则 return false
它将传播。
并且重要的是让您的视图最上面覆盖所有其他视图,即
FrameLayout
YourCustomView
PreviousLayout
我正在为平板电脑编写一个 Android 5.1 应用程序,我能够在 MotionEvent
对象的帮助下区分触摸和手写笔输入。
是否可以只允许触控笔输入(即触摸应该没有效果)?
不确定是否有更好的方法,但您可以创建自定义视图,将其放在布局的最顶部(使其占据整个宽度和高度,以便覆盖整个区域)。仅查看的工作是处理输入和 "consume" 所有你想过滤掉的运动事件(即这些不是来自手写笔)通过将它们标记为已处理,并忽略所有其他的,允许框架通过你的视图传播由其他视图定期处理的层次结构。
编辑
最简单的实现方式是使您的视图扩展现有但简单的内容,例如。 FrameLayout
或 Space
(这样您就不需要打扰所有的测量内容)并覆盖 onTouchEvent()
以过滤所有输入。如果您不想传递此内容,请在此处 returning true
将其 "consume",否则 return false
它将传播。
并且重要的是让您的视图最上面覆盖所有其他视图,即
FrameLayout
YourCustomView
PreviousLayout