我正在写一个测验。我有四个按钮:答案选项,我正在使用Android multitouch! hack anyone?代码段来禁用多点触控。
但按钮似乎只有在你很快点击它们时才有效。
如果你慢慢按下按钮然后松开它,按钮只会闪烁,没有任何反应。有人可以帮我弄清楚如何解决这个问题吗?
答案 0 :(得分:0)
以下是一段可能有效的代码,请注意我没有时间尝试..
private static final String sClickKey = "clickkey";
private boolean mClicked;
@Override
public void onClick(View view) {
synchronized (sClickKey){
if (!mClicked){
mClicked = true;
/* do the rest here... */
}
}
}
使用synchronize
将确保只有第一个点按的按钮才会在if(!mClicked)
中输入,之后mClicked
值会更改为true
,因此下一个事件不会传入if语句..
我希望这有帮助! ;)
答案 1 :(得分:0)
我使用了@JQCorreia hack并且像这样覆盖了他的“onTouchEvent”:
@Override
public boolean onTouchEvent(MotionEvent event){
int action = event.getAction() & MotionEvent.ACTION_MASK;
switch (action) {
case MotionEvent.ACTION_DOWN:
for(View v: views){
Rect r = new Rect();
v.getGlobalVisibleRect(r);
if (event.getX() > r.left && event.getX() < r.right
&& event.getY() > r.top
&& event.getY() < r.bottom) {
v.onTouchEvent(event);
}
}
break;
case MotionEvent.ACTION_UP:
for(View v: views){
Rect r = new Rect();
v.getGlobalVisibleRect(r);
if (event.getX() > r.left && event.getX() < r.right
&& event.getY() > r.top
&& event.getY() < r.bottom) {
v.onTouchEvent(event);
}
}
break;
case MotionEvent.ACTION_MOVE:
for(View v: views){
Rect r = new Rect();
v.getGlobalVisibleRect(r);
if (event.getX() > r.left && event.getX() < r.right
&& event.getY() > r.top
&& event.getY() < r.bottom) {
}
else{
v.onTouchEvent(event);
}
}
break;
}
return true;
}
这适合我。