我正在写一个测验。我有四个按钮:回答选项,我正在使用Android 多点触控!破解任何人?禁用多点触控的代码片段。
但是这些按钮似乎只有在您快速点击它们时才起作用。
如果你慢慢按下按钮然后松开,按钮只会闪烁,没有任何反应。有人可以帮我弄清楚如何解决这个问题吗?
我正在写一个测验。我有四个按钮:回答选项,我正在使用Android 多点触控!破解任何人?禁用多点触控的代码片段。
但是这些按钮似乎只有在您快速点击它们时才起作用。
如果你慢慢按下按钮然后松开,按钮只会闪烁,没有任何反应。有人可以帮我弄清楚如何解决这个问题吗?
I have used @JQCorreia hack and overrided his "onTouchEvent" like this:
@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;
}
That works for me.
这是一段可能有效的代码,请注意我没有时间尝试它..
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 语句中传递..
我希望这有帮助!;)