在Android上检测触摸区域

时间:2012-04-04 17:20:03

标签: android

是否可以检测到每个被触摸的像素?更具体地,当用户触摸屏幕时,是否可以跟踪用户触摸的点群集的所有x-y坐标?如何区分用户使用拇指绘图以及何时使用手指绘图?我想根据用户触摸屏幕的方式反映画笔差异,并且还想跟踪随时间触摸的所有像素的x-y坐标。非常感谢您提供任何帮助。

3 个答案:

答案 0 :(得分:5)

这将非常棘手,主要是因为每个Android手机的行为都会有所不同。有些触摸屏设备非常非常敏感,有些触摸屏设备基本上是“无聊的”。

这听起来更像是你想要追踪压力 - 用户在屏幕上的难度 - 这实际上是在Android设备上支持的。

我认为您可以通过监控触摸事件的所有来找到您的一些答案 - 实际上,大多数应用程序会忽略大量事件或执行某些事件的“平滑”当用户操作屏幕时,确实存在大量的触摸事件。这样做可能会对您的应用程序性能产生负面影响。

我建议你研究一下压力灵敏度,然后根据压力计算主触点周围的圆形区域,然后围绕它建立刷子。

另一个想法是将更多的手势方法融入到您想要做的事情中 - 例如,用两根手指的尖端(索引和中间)可视化触摸屏幕并在食指周围滚动中指或者简单地相对于食指上下移动中指。两个手指都会一起移动进行绘画。这可以用来动态操纵绘图角度,甚至可以在一组预先选定的画笔之间切换,也可以在绘画时动态改变画笔大小。

我希望看到的一些上述想法已经实现 - 让我知道你准备好应用程序的时间。

祝你好运! 罗德尼

答案 1 :(得分:2)

如果你的图像上有一个监听器,它会响应该边界框内的触摸,基本上。

所以,为了得到你想要的东西,你可以,但是,我永远不会这样做,围绕每个像素或一小组像素创建一个盒子,并听一听。

无论您何时触摸,它都可以触发事件,然后您可以做出相应的反应。

我想不出任何其他解决方案会同时给你一个人触摸的每个像素。

你可能想阅读多点触控,因为这里有一些建议我帮助你:

http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

答案 2 :(得分:0)

如果您正在寻找一种方法,可以在Activity#setContentView(int)之后将内容视图作为查看,那么您可以在布局的最外层元素上设置ID:< / p>

android:id="@+id/entire_view"并在onCreate()后的setContentView方法中引用它:

View view = getViewById(R.id.entire_view);
view.setOnTouchListener( ... );
相关问题