gpt4 book ai didi

android - 使用 Android 接收 onTouch 和 onClick 事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:12 25 4
gpt4 key购买 nike

我有一个 View 需要处理 onTouch 手势 onClick 事件。实现这一目标的正确方法是什么?

我在 View 上设置了一个onTouchListener 和一个onClickListener。每当我触摸 View 时,首先触发 onTouch 事件,然后触发 onClick。但是,我必须从 onTouch 事件处理程序返回 truefalse。返回 true 意味着该事件正在被消费,因此 android 事件系统将不会进一步传播该事件。

因此,永远不会生成 onClick 事件,至少当我在 onTouch 中返回 true 时,永远不会触发我的 onClick 监听器 事件处理程序。另一方面,返回 false 没有任何选择,因为这会阻止 onTouch 监听器接收识别手势所需的任何进一步事件。解决这个问题的通常方法是什么?

最佳答案

在您的 GestureDetector 中,您可以直接调用 callOnClick()。请注意 View.callOnClick API 需要 API 级别 15。试试吧。

 // Create a Gesturedetector
GestureDetector mGestureDetector = new GestureDetector(context, new MyGestureDetector());

// Add a OnTouchListener into view
m_myViewer.setOnTouchListener(new OnTouchListener()
{

@Override
public boolean onTouch(View v, MotionEvent event)
{
return mGestureDetector.onTouchEvent(event);
}
});

private class MyGestureDetector extends GestureDetector.SimpleOnGestureListener
{
public boolean onSingleTapUp(MotionEvent e) {
// ---Call it directly---
callOnClick();
return false;
}

public void onLongPress(MotionEvent e) {
}

public boolean onDoubleTap(MotionEvent e) {
return false;
}

public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}

public boolean onSingleTapConfirmed(MotionEvent e) {
return false;

}

public void onShowPress(MotionEvent e) {
LogUtil.d(TAG, "onShowPress");
}

public boolean onDown(MotionEvent e) {
// Must return true to get matching events for this down event.
return true;
}

public boolean onScroll(MotionEvent e1, MotionEvent e2, final float distanceX, float distanceY) {
return super.onScroll(e1, e2, distanceX, distanceY);
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// do something
return super.onFling(e1, e2, velocityX, velocityY);
}
}

关于android - 使用 Android 接收 onTouch 和 onClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14480418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com