首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取X和Y坐标onClick

获取X和Y坐标onClick
EN

Stack Overflow用户
提问于 2014-05-21 03:57:52
回答 3查看 12.3K关注 0票数 4

我以前有一个onTouchListener,但是我需要将它更改为一个onClickListener,因为我不希望长触摸记录不同的值。在我的一行代码中,我使用了X[i]=Integer.valueOf((int)event.getX());,它与onTouchListener完美地工作,但是对于onClickListener,我得到了错误event cannot be resolved

我的问题是,是否有一个用于event.getX() onClickListener**?**的函数?

下面是我的代码的一部分:

代码语言:javascript
运行
复制
    touchLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            X[i]=Integer.valueOf((int)event.getX());
        }
    });
}

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-21 04:30:04

你应该看看这个,这可能对你有帮助:

代码语言:javascript
运行
复制
@Override
    public boolean onTouchEvent(MotionEvent event) {
        int x = (int)event.getX();
        int y = (int)event.getY();
        switch (event.getAction()) {

            case MotionEvent.ACTION_MOVE:
                 Log.i("222","X-"+x+"===Y="+y);

        }
    return false;
    }
票数 5
EN

Stack Overflow用户

发布于 2016-02-09 10:45:05

我非常肯定您无法获得单击x和y的同义词,因为OnClick是一个由视图的触摸侦听器的内部实现触发的事件。当用户举起手指,移动的距离不超过一定距离(称为触摸晃动)时,就会触发它。

另一方面,如果您实现了自己的触摸侦听器,您可以检测触摸手势从何处开始和结束,并对这些坐标做您需要的任何操作。看起来会是这样的:

代码语言:javascript
运行
复制
    view.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                startX = (int) event.getX();
                startY = (int) event.getY();
            }

            if (event.getAction() == MotionEvent.ACTION_UP) {
                int endX = (int) event.getX();
                int endY = (int) event.getY();
                int dX = Math.abs(endX - startX);
                int dY = Math.abs(endY - startY);


                if (Math.sqrt(Math.pow(dX, 2) + Math.pow(dY, 2)) <= touchSlop) {
                    // Your on click logic here...
                    return true;
                }
            }
       return false;
    }
});

这里的touchSlop变量包含在手势被视为滚动之前可以移动多少。您可以通过调用ViewConfiguration.get(context).getScaledTouchSlop().获得此值。

票数 14
EN

Stack Overflow用户

发布于 2014-05-21 04:41:05

你可以试试这个

代码语言:javascript
运行
复制
      public void onClick(View view) {
        int[] values = new int[2]; 
        view.getLocationOnScreen(values);
        Log.d("X & Y",values[0]+" "+values[1]);
    }

在方法

代码语言:javascript
运行
复制
      getLocationOnScreen(values);

你可以做任何在你的情况下不起作用的want.If,请告诉我

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23773705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档