我正在创建一个界面,您可以通过触摸它来打开/关闭点,但如果我尝试检测是否触摸了图像视图,它只会检测点击,而不是当我一次触摸多个点时。
实施例: 当我点击一个点时,它会亮起来。但是当我在多个点上滑动时,只有我触摸的第一个点会亮起,而不是我触摸的所有点。
我目前有一个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个点,旁边有一个按钮。按钮和点工作,我可以打开/关闭点,我只是无法使用滑动开/关功能。
答案 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
}
}
}
}