[英]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.