检查触摸的ImageView

时间:2017-03-12 14:19:34

标签: android imageview ontouchlistener

我正在创建一个界面,您可以通过触摸它来打开/关闭点,但如果我尝试检测是否触摸了图像视图,它只会检测点击,而不是当我一次触摸多个点时。

实施例: 当我点击一个点时,它会亮起来。但是当我在多个点上滑动时,只有我触摸的第一个点会亮起,而不是我触摸的所有点。

我目前有一个onTouchlistener设置如下:

BaseApplication.h

'toState'由按钮更改,因此您可以在打开点或关闭它们之间切换。

有人可以告诉我我做错了吗?

修改

活动:

v.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        ImageView view = (ImageView) v;
        if(toState == 1){
            view.setImageResource(R.mipmap.dot_on);
        }else if(toState == 0){
            view.setImageResource(R.mipmap.dot_off);
        }

        return false;
    }
v});

xml只有200个点,旁边有一个按钮。按钮和点工作,我可以打开/关闭点,我只是无法使用滑动开/关功能。

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作。为每种运动事件设置相同的代码。并且还返回 TRUE

public void set(T t) {
    this.t1 = t;
}

答案 1 :(得分:0)

我自己找到了答案,因为你的建议都没有。

我在主视图上使用了很多带有onTouchListener的Rects(点'视图的父级)。

在onCreate()方法中,我为每个点启动了一个带有Rect的Rect []。

for (int i=0;i<v.getChildCount;i++) {
    Rects[i] = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
} 

然后在主视图的onTouchListener中,我检查其中一个Rect是否包含OnTouchListener中标记的位置。如果其中之一,我打开/关闭它们。

mainView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {         
        for (int i=0;i<v.getChildCount;i++) {
            if (Rects[i].contains((int) event.getX(), (int) event.getY())) {
                 //turn dot on/off
            }
        }
    }
}