我的应用程序中有listview,当点击任何listitem导航到摘要屏幕时。 在这里,当我双击其开放的两个摘要屏幕。如何处理双击?
任何人都有任何想法,建议我。
答案 0 :(得分:1)
尝试类似这样的事情
YourView.setOnTouchListener(new View.OnTouchListener() {
private GestureDetector gestureDetector = new GestureDetector(Youractivity.this, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.d("TEST", "onDoubleTap");
return super.onDoubleTap(e);
}
});
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("TEST", "Raw event: " + event.getAction() + ", (" + event.getRawX() + ", " + event.getRawY() + ")");
gestureDetector.onTouchEvent(event);
return true;
}
});
答案 1 :(得分:0)
为此,您可以使用Handler
课程。
创建int
类型的新变量,称为counter
,并将其设置为0
。
然后找到您的列表视图并在其上调用方法setOnItemClickListener(listener)
。
在这里,您需要检查counter
是0
还是1
。
如果它0
将1
增加Handler
并添加postDelayed
1
个帖子来重置计数器(将其设置为零)。如果是int counter = 0; //our counter to check if the item has been tapped already
Handler h = new Handler(); //import from android.os
ListView lv = (ListView) findViewById(R.id.listview);
lv.setAdapter(adapter); //set your adapter here
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) {
switch(counter) {
case 0: //first tap
counter++; //increase the counter
h.postDelayed(new Runnable() {
@Override
public void run() {
counter = 0;
}
}, 2000); //set the counter to 0 after 2 seconds (2000 milliseconds)
break;
case 1: //second tap
counter = 0; //reset the counter
//Do your stuff here
break;
}
}
});
,请重置计数器并执行操作。
修改强>:
我刚刚发现this回答说,如果使用UI指南中描述的长按操作会更好。它也是用户期望的。
所以也许使用长按而不是双击?
但是这里有一些示例代码:
OnItemClickListener
这里有一些参考文献:
.mySlides {
position: relative;
}
.text2 {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%);
/* removed bottom: 16px; */
}
here