在网格视图中滚动

时间:2011-02-02 04:10:20

标签: android

我有一组图片。我将它作为网格显示在屏幕上。 所以基于选择我想做的每个图像动作。 我做了。但还有一个要求是,当我们通过这些图像移动手时,我也必须执行相同的操作。也就是说,我必须跟踪我现在触摸的图像并执行操作。我该如何实施呢?有谁有想法吗?请回复..

3 个答案:

答案 0 :(得分:0)

View.OnTouchListener尝试onTouch()事件。当用户执行限定为触摸事件的操作时调用此方法,包括按下,释放或屏幕上的任何移动手势(在项目的范围内)。

希望这有帮助。

答案 1 :(得分:0)

您可以为图像设置监听器,即

imgView.setOnTouchListener(...)
imgView.setOnFocusChangeListener(...)

imgView.setOnClickListener()

然后在这些侦听器中执行操作。

如果您使用setOnFocusChangeListener,那么您应该能够处理所有情况,无论您通过触摸或轨迹球选择图像的方式如何。

答案 2 :(得分:0)

我完成了。

在下面的代码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;
        }
    }