簡體   English   中英

通過點擊獲取X和Y坐標

[英]Get X and Y coordinates onClick

我曾經有一個onTouchListener ,但我需要將其更改為onClickListener ,因為我不想觸及長比短觸摸記錄不同的值。 在我的代碼行之一中,我有X[i]=Integer.valueOf((int)event.getX()); ,這與工作完全onTouchListener ,但有一個onClickListener ,我得到的錯誤event cannot be resolved

我的問題是,是否有event.getX()一個功能onClickListener

這是我的代碼的一部分:

    touchLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            X[i]=Integer.valueOf((int)event.getX());
        }
    });
}

提前致謝

我非常確定您無法獲得單擊x和y坐標,因為OnClick是由視圖的觸摸偵聽器的內部實現觸發的事件。 當用戶抬起他的手指並且其移動的距離不超過特定距離(稱為觸摸傾斜)時,將觸發該操作。

另一方面,如果實現自己的觸摸偵聽器,則可以檢測到觸摸手勢的開始和結束位置,並使用這些坐標進行所需的操作。 它看起來像這樣:

    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()獲得此值。

您可能應該看一下,這可能會對您有所幫助:

@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;
    }

你可以試試這個

      public void onClick(View view) {
        int[] values = new int[2]; 
        view.getLocationOnScreen(values);
        Log.d("X & Y",values[0]+" "+values[1]);
    }

方法中

      getLocationOnScreen(values);

您可以做任何您想做的事情。如果在您的情況下不起作用,請告訴我

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM