gpt4 book ai didi

android - 为 ImageView 实现 onTouchListner 和 onLongClickListner

转载 作者:行者123 更新时间:2023-11-30 03:16:01 26 4
gpt4 key购买 nike

我尝试像这样为我的 ImageView 实现 onTouchListneronLongClickListner :

imageView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {

ShowMessageToast("Long Touch ");
return true ;
}

});
imageView.setOnTouchListener(new ImageView.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {

action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
ShowMessageToast("Down ");
break;

case MotionEvent.ACTION_MOVE:
ShowMessageToast("Moved ");
break;


default:
break;
}

return true;
}

但是 onLongClickListner 在我停用 onTouchListner 之前不起作用(//评论)。

如果 onTouchListner 没有作为注释 (//....) 它永远不会显示“长按”

ShowMessageToast("Moved ") 只是一个在 Toast 中显示消息的函数。

最佳答案

LongClickListenerTouchListener 相互干扰,因为长按总是以触摸 (ACTION_DOWN) 开始。您希望在 TouchListener 中检测哪种手势?

如果您想要(例如)检测长按和滚动,那么 TouchListener 和 GestureListener 将是处理它的方法。以下是如何执行此操作的示例:

findViewById(R.id.myImageView).setOnTouchListener(new OnTouchListener() {
private GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.d("TEST", "onScroll");
// TODO Auto-generated method stub
return super.onScroll(e1, e2, distanceX, distanceY);
}

/* (non-Javadoc)
* @see android.view.GestureDetector.SimpleOnGestureListener#onLongPress(android.view.MotionEvent)
*/
@Override
public void onLongPress(MotionEvent e) {
Log.d("TEST", "onLongPress");
// TODO Auto-generated method stub
super.onLongPress(e);
}

// ... implement here other callback methods like onFling, onScroll as necessary
});

@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("TEST", "Raw event: " + event.getAction() + ", (" + event.getRawX() + ", " + event.getRawY() + ")");
return gestureDetector.onTouchEvent(event);
}
});

备注

  • 这只实现了 onTouchListener,不需要 onLonGClickListenerTouchListener 只是将所有触摸事件传递给手势监听器。手势监听器收集手势并在检测到其中一个手势时调用回调方法。
  • 手势可以是:滚动、滑动、点击(点击 - 确认不是双击或不等待)、双击、长按。
  • 我的代码展示了一个长按和滚动的例子。只需实现其他回调,因为您需要检测其他手势。

关于android - 为 ImageView 实现 onTouchListner 和 onLongClickListner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126747/

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