是否可以检测到每个被触摸的像素?更具体地说,当用户触摸屏幕时,是否可以跟踪用户触摸的点簇的所有 xy 坐标?我如何区分用户何时用拇指绘图和何时用指尖绘图?我想根据用户触摸屏幕的方式来反映画笔差异,并且还想跟踪随着时间的推移被触摸的所有像素的 xy 坐标。非常感谢您的帮助。
3 回答
这将非常棘手,主要是因为每部 android 手机的行为都会有所不同。相比之下,有些触摸屏设备非常、非常敏感,而有些则基本上“乏味”。
这听起来更像是您想要跟踪压力——用户在屏幕上按下的力度有多大——这实际上在 android 设备上得到了支持。
我认为您的一些答案可以通过监视所有触摸事件来找到 - 实际上,大多数应用程序会忽略大量事件或对事件执行某种“平滑”,因为当用户正在操作屏幕。但是,这样做可能会对您的应用程序性能产生负面影响。
我建议您查看压力灵敏度并根据压力计算主要触摸点周围的圆形区域,然后围绕该区域构建画笔。
另一个想法是在您尝试做的事情中加入更多的手势方法 - 例如,想象用两个手指尖(食指和中指)一起触摸屏幕并将中指围绕食指滚动或简单地移动中指相对于食指上下。两个手指将一起移动以进行绘画。这可用于动态操纵绘图角度,甚至可以在一组预选的画笔之间切换,或者可以在绘画时动态更改画笔大小。
我希望看到上面的一些想法被实现——当你准备好你的应用程序时让我知道。
祝你好运!罗德尼
如果您的图像上有一个侦听器,它将响应该边界框内的触摸,基本上。
所以,为了得到你想要的,你可以,但是,我永远不会这样做,在每个像素或一小组像素周围创建一个框,然后听一听。
无论您在哪里触摸,它都可能触发一个事件,然后您可以做出相应的反应。
我想不出任何其他解决方案可以一次为您提供一个人触摸的每个像素。
不过,您可能想阅读多点触控,因为这里有一些建议可以帮助您:
http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
如果您正在寻找一种将内容视图作为View after的方法Activity#setContentView(int)
,那么您可以在布局的最外层元素上设置一个 id:
android:id="@+id/entire_view"
onCreate()
并在您的方法中引用它setContentView
:
View view = getViewById(R.id.entire_view);
view.setOnTouchListener( ... );