android - Android 使用 OnTouch 检测 longClick 位置
问题描述
好吧,我的目标是检测长点击的位置,我很困惑从哪里开始,但我尝试使用 OnTouch,因为它有助于检测点击的位置,我试图使用计时器让它作为 longClick 运行,但它不会工作
clickableObject.setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){
if(!hold)startTime=System.currentTimeMillis();
}
else if(motionEvent.getAction()==MotionEvent.ACTION_UP){
hold=false;
}
while(motionEvent.getAction()==MotionEvent.ACTION_DOWN&&System.currentTimeMillis()-startTime<=1500);
if(System.currentTimeMillis()-startTime>1500)
Toast.makeText(context, "done", Toast.LENGTH_SHORT).show();
return true;
}
});
/*
就像我单击短按一样,它可以工作,我希望它只能在 longClick 上工作
解决方案
最后我找到了一个解决方案我在 OnTouch 中使用 longClick 侦听器创建了 onTouchListener 我只得到了位置
在 OnLongListener 我使用位置的值
@SuppressLint("ClickableViewAccessibility")
public void getClickPositions(View clickableObject, final ClickPositions clickPositions){
clickableObject.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getAction()==MotionEvent.ACTION_DOWN) {
if (clickPositions != null)
clickPositions.getLastCordination(motionEvent.getX(), motionEvent.getY());
}
return false;
}
});
}
public interface ClickPositions{void getLastCordination(float left,float top);}
public void showImageOptions(final View clickableObject, final ClickPositions clickPositions) {
getClickPositions(clickableObject, new ClickPositions() {
@Override
public void getLastCordination(float left, float top) {
x = left;
y = top;
}
});
clickableObject.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Toast.makeText(context, String.valueOf(x) + ",", Toast.LENGTH_SHORT).show();
return false;
}
});
}
然后我只调用函数 showImageOption
推荐阅读
- scala - Is it Scala style to use a for loop in Scala/Spark?
- python - python:AttributeError:'str'对象没有属性'keys'
- javascript - 在第一条消息是变量之后,我将如何等待新消息
- javascript - TypeError:无法读取 C:\NODEJS-COMPLETE-GUIDE\controllers\shop.js:45:37 处未定义的属性“价格”
- javascript - Javascript 错误 - addPreSearch 不是函数 - Dynamics CRM
- microsoft-information-protection - MIP SDK:无法创建 FileHandler 并出现错误“不受本地服务器保护的内容”
- php - PHP - AS400 DB2 表在字段名称的开头使用 $
- php - 如何在 php 方面验证中访问 json 子项?
- microsoft-graph-api - Microsoft Graph API 创建事件不再返回会议 ID
- mysql - MYSQL 获取按用户分组的第一(MIN)和最后(MAX)订单记录