首先,我想为我的英语道歉。那不是我的母语。
我在Android中有一个简单的图库。图像加载到GridView
。我对onItemClickListener
和onTouchListener
有疑问。我为onItemClickListener
GridView
(onTouchListener
的孩子设置了GridView
和ImageViews
onTouchListener
。当我点击图像时,它应该显示在手机屏幕的中央,当我按下它时,它应该放大我手指所在的位置,当我松开手指时,它应该缩小。
问题是当设置{{1}}时,只会触发它。当我点击时和按下释放时我想知道。
感谢您的帮助。
答案 0 :(得分:0)
您正在寻找检查返回event.getAction()
常量的MotionEvent
的值:
gridView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//Do something when user touch the screen
//(first touch event-before moving or releasing the finger)
break;
case MotionEvent.ACTION_UP:
//Do something when user release the finger touching the screen.
break;
}
return false;
}
});
当用户在从屏幕上释放手指之前移动手指时,你也有ACTION_MOVE
存在(适合拖动......)
编辑:
onTouch()
的问题在于它仅存在于整个视图(您的网格),而您没有onItemTouch()
。一种解决方案是在onItemClick()
发生在类定义变量(例如您单击的图片的Bitmap
)时从项目中获取所需的信息,然后将其用于您需要的任何内容onTouch()
事件。请记住onTouch()
如果您在任何时候返回true,则表示您已经处理了触摸案例,onClick()
将不会发生。此外 - 仅在从屏幕上释放手指时点击通话(表示MotionEvent.ACTION_UP
),因此您不会在触摸事件中使用它。
要解决此问题,您需要使用onItemLongClick()
,或者使用自定义适配器(onTouchListener
)为网格中的每个项目设置getView()
。