在安卓设备上检测触摸区域

5

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

3个回答

5
这将是非常棘手的,主要因为每个安卓手机的表现都会不同。有些触摸屏设备非常敏感,而有些则相对“迟钝”。
此外,你似乎更想要跟踪压力 - 用户在屏幕上按得有多用力 - 这实际上是支持安卓设备的。
我认为,你可以通过监视所有的触摸事件来找到一些答案 - 实际上,大多数应用程序会忽略很多事件或对事件进行某种“平滑处理”,因为当用户操作屏幕时,会有大量的触摸事件涌现。但这样做可能会对你的应用程序性能产生负面影响。
我建议你研究一下压力灵敏度,并根据压力计算出主要触摸点周围的圆形区域,然后在此基础上构建画笔。
另一个想法是将更多的手势方法融入到你所尝试的内容中 - 例如,想象一下用两个手指(食指和中指)的尖端触摸屏幕,并将中指绕着食指转动,或者只是上下移动中指与食指的相对位置。两个手指将一起移动画笔。这可以用于实时操作绘画角度,或者甚至切换一组预先选择的画笔,或者在绘画时实时改变画笔大小。
我很想看到上述一些想法得以实现 - 当你的应用程序准备好了,请告诉我。
祝你好运! 罗德尼

2

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

所以,为了得到您想要的结果,您可以创建一个包围每个像素或小组像素的框,并监听触摸事件。

无论在哪里触摸,它都可能触发一个事件,然后您可以相应地做出反应。

我想不出任何其他解决方案,可以一次性将人们触摸的每个像素都提供给您。

您可能需要阅读一些关于多点触控的资料,因为这里有一些建议可能会对您有帮助:

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


0
如果您正在寻找一种方法,在Activity#setContentView(int)之后将您的内容视图作为View获取,那么您可以在布局的最外层元素上设置一个id:android:id="@+id/entire_view",并在setContentView之后的onCreate()方法中引用它:
View view = getViewById(R.id.entire_view);
view.setOnTouchListener( ... );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接