作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试像这样为我的 ImageView
实现 onTouchListner
和 onLongClickListner
:
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 中显示消息的函数。
最佳答案
LongClickListener
和 TouchListener
相互干扰,因为长按总是以触摸 (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);
}
});
备注
onLonGClickListener
。 TouchListener
只是将所有触摸事件传递给手势监听器。手势监听器收集手势并在检测到其中一个手势时调用回调方法。关于android - 为 ImageView 实现 onTouchListner 和 onLongClickListner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126747/
我尝试像这样为我的 ImageView 实现 onTouchListner 和 onLongClickListner : imageView.setOnLongClickListener(new Vi
我是一名优秀的程序员,十分优秀!