![](/img/trans.png)
[英]Android + OpenCV: OnTouch getX(), getY() doesn't return right values
[英]onTouch giving strange results in getX android
当您触摸图像时,我正在尝试移动它。 我意识到,当我移动图像时,会产生奇怪的事情(有时效果很好,而其他人会移动到不同的地方)。 我用getX值制作了一个Log.d,这就是我得到的:
03-16 19:26:23.569: D/eventX:(15450): 23.0
03-16 19:26:23.599: D/eventX:(15450): 91.0
03-16 19:26:23.629: D/eventX:(15450): 20.0
03-16 19:26:23.659: D/eventX:(15450): 89.0
03-16 19:26:23.689: D/eventX:(15450): 17.0
03-16 19:26:23.719: D/eventX:(15450): 87.0
03-16 19:26:23.749: D/eventX:(15450): 14.0
03-16 19:26:23.779: D/eventX:(15450): 85.0
03-16 19:26:23.809: D/eventX:(15450): 11.0
03-16 19:26:23.839: D/eventX:(15450): 83.0
03-16 19:26:23.879: D/eventX:(15450): 8.0
如您所见,一个是好的价值(我所触摸的位置的价值),另一个是没有意义的。 有人知道原因吗?
这是我正在使用的代码的安全性...
head.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent ev) {
// TODO Auto-generated method stub
switch (ev.getAction()) {
case MotionEvent.ACTION_MOVE: {
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(head.getLayoutParams().width, head.getLayoutParams().height);
Log.d("eventX:", ((Float)ev.getX()).toString());
layoutParams.leftMargin = (int) ev.getX();
head.setLayoutParams(layoutParams);
count = false;
break;
}
使用典型的getX()
函数完全绑定到分派MotionEvent
并返回相对于该视图的坐标的特定视图。 在您的情况下,似乎有多个视图正在调度事件,并且您正在获得多个意外值。
无论如何,使用getRawX()
都可以使您获得一致且绝对的坐标,并且可以解决所有不同坐标的混淆。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.