Java 检测长按和长按
在这个函数中,我想实现“如果是长按,返回标志=真,否则打开平铺”`Java 检测长按和长按,java,android,Java,Android,在这个函数中,我想实现“如果是长按,返回标志=真,否则打开平铺”` public boolean onTouchEvent(MotionEvent event) { int x=(int)event.getX(); int y=(int)event.getY(); long DownTime = event.getDownTime(); long UpTime = event.getEventTime(); lon
public boolean onTouchEvent(MotionEvent event) {
int x=(int)event.getX();
int y=(int)event.getY();
long DownTime = event.getDownTime();
long UpTime = event.getEventTime();
long longPresstouch = UpTime - DownTime;
int idxX=(x-mine.x)/mine.tileWidth;
int idxY=(y-mine.y)/mine.tileWidth;
if(longPresstouch > longTouchTime)
{
if(x>=mine.x&&y>=mine.y&&x<=(mine.mapWidth+mine.x)&&y<=(mine.y+mine.mapHeight)) {
mine.setflag(new Mine.Point(idxX, idxY), true);
invalidate();
}
}
else if(event.getAction()==MotionEvent.ACTION_DOWN){
if(x>=mine.x&&y>=mine.y&&x<=(mine.mapWidth+mine.x)&&y<=(mine.y+mine.mapHeight)) //in tile or out tile
{
mine.open(new Mine.Point(idxX,idxY),isFirst);
isFirst=false;
if(mine.tile[idxY][idxX].value==-1)
{
mine.isDrawAllMine=true;
new AlertDialog.Builder(context)
.setCancelable(false)
.setMessage("GameOver,你踩到地雷啦!")
.setPositiveButton("再来一局", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mine.init();
isFalse=true;
isFirst=true;
invalidate();
}
})
.setNegativeButton("退出游戏", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
}
})
.create()
.show();
}
if(isFalse)
{
isFalse=false;
invalidate();
return true;
}
logic();
invalidate();
}
}
return true;
}
public boolean onTouchEvent(运动事件){
int x=(int)event.getX();
int y=(int)event.getY();
长时间停机=event.getDownTime();
长正常运行时间=event.getEventTime();
long longPresstouch=正常运行时间-停机时间;
int idxX=(x-mine.x)/mine.tileWidth;
int idxY=(y-mine.y)/mine.tileWidth;
如果(长按触摸>长按时间)
{
如果(x>=mine.x&&y>=mine.y&&x=mine.y&&x每个扩展Android.view.view
的Android组件都将有这两种方法
View.setOnClickListener()
如果单击
View.setOnLongClickListener()
如果长时间单击,请确保它是View.isLongClickable()
返回true,或者通过调用View.setLongClickable(true)
进行设置
因为你是在对向下做出反应并显示对话框。因为你是在立即对向下事件做出反应,所以你从不等待看它是否是长按。这就是为什么android中的触摸事件通常发生在向上事件上-因此你可以判断触摸是否是按下、长按、手势等
另外,正如另一张海报所说,点击和长时钟是内置事件。除非您想捕获更复杂的行为,否则没有理由编写onTouchEvent。计算动作向下和动作向上之间的时间差。如果时间差大于1000毫秒,则返回true,否则打开互动程序。提供文本和Giv形式的其他代码e更详细的信息,如是使用RecyclerView还是什么?不要将代码作为图像发布。这无助于为问题画布中的单个单元格提供选项看起来OP正在编写扫雷器,但没有每个单元格的视图