在网格视图内滚动
问题描述:
我有一组图像。我将它作为网格显示在屏幕上。 所以基于选择每个图像我想要做的行动。 我已经完成了。但还有一个要求是,当我们通过这些图像移动手时,我也必须执行相同的操作。也就是说,我将不得不跟踪我现在触摸的图像并执行操作。我将如何实施它?有人有什么主意吗?请回复。在网格视图内滚动
答
我完成了。
在下面的代码colorGV
是我的网格名称。 添加监听器。
colorGV.setOnTouchListener(new OnTouchClick(context));
,并定义为onTouchClick:
private class OnTouchClick implements OnTouchListener {
Context context;
OnTouchClick(Context context) {
this.context = context;
}
public boolean onTouch(View v, MotionEvent event) {
try {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
int x = (int) event.getX();
int y = (int) event.getY();
int position = -1;
for (int i = 0; i < colorGV.getChildCount(); i++) {
Rect ButtonRect = new Rect();
colorGV.getChildAt(i).getHitRect(ButtonRect);
if (ButtonRect.contains(x, y)) {
position = i;
break;
}
}
if (position >= 0 && prevPos != position) {
System.out.println("Position changed :" + position);
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
答
尝试onTouch()
事件从View.OnTouchListener。当用户执行限定为触摸事件的操作时(包括按下,释放或屏幕上的任何移动手势(在该项目的范围内))时,会调用此函数。
希望这会有所帮助。
答
您可以设置听众您的图像,即
imgView.setOnTouchListener(...)
imgView.setOnFocusChangeListener(...)
或
imgView.setOnClickListener()
,然后执行这些听众的动作。
如果您使用setOnFocusChangeListener,那么您应该能够处理所有情况,无论您通过触摸或跟踪球以何种方式选择图像。
>在选择我想要做的行动,每个图像因此,基于。我已经完成了==>如何完成选择?通过轨迹球? – 2011-02-02 04:23:30
这是一个网格视图。所以我使用ItemClickListener来做到这一点.. – Mathew 2011-02-02 04:25:58