我试图在android中的Canvas
上刷新DoubleTap
。我在自定义GestureDetector
中使用View
。
final GestureDetector mDetector = new GestureDetector(
getContext(), new GestureDetector.OnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
invalidate();
return true;
}
}
但我收到了错误
new的类型onDoubleTap(MotionEvent) GestureDetector.OnGestureListener(){}必须覆盖或实现 超类型方法
带
Remove '@Override' annotation
溶液。我删除了覆盖并获得此警告
来自new类型的onDoubleTap(MotionEvent)方法 GestureDetector.OnGestureListener(){}从不在本地使用。
然后我尝试测试这是否有效,并且每当我TextView
时都会更改DoubleTap
字符串。没有任何事情发生。
我还查看了GestureDetector Reference的解释,但他们甚至没有DoubleTap
那里,每个人都使用。我该怎么办?
答案 0 :(得分:0)
试试这个
final GestureDetector mDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
return true;
}
});
答案 1 :(得分:0)
对于那些想知道如何将其设置为相应视图的人:
final GestureDetector gDetector = new GestureDetector(getBaseContext(), new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
doIt();
return true;
}
});
// Set it to the view
mButton.setOnTouchListener((v, event) -> gDetector.onTouchEvent(event));
答案 2 :(得分:0)
我解决这个问题的方法不同,因为我还需要为 onClick 侦听器执行一些操作,而且它在列表视图中,所以我需要知道项目内容是什么。 这是我使用 kotlin Job 的方法: 在课程的顶部,我声明了这样的内容:
private var doubleTapTimerJob: Job = Job()
private var clickedViewItem: CartViewItem? = null
val DOUBLE_TAP_DELAY = 200L
其中 CartViewItem 是列表中使用的模型。 这是我的 onClickListener 逻辑:
if (clickedViewItem == null || clickedViewItem != cartViewItem) {
doubleTapTimerJob.cancel()
doubleTapTimerJob = lifecycleScope.launch {
delay(DOUBLE_TAP_DELAY)
clickedViewItem = null
}
clickedViewItem = cartViewItem
onClicked(cartViewItem)
} else {
onDoubleClicked(cartViewItem)
clickedViewItem = null
doubleTapTimerJob.cancel()
}
这里我等待第二次点击 200 毫秒,如果没有发生,我会让 clickedViewItem 为 null,所以它不再有效