的Android按钮侦听
答
这是否对你的工作:
public class ButtonDownListener implements OnTouchListener{
boolean pressed = false;
public boolean onTouch(View v, MotionEvent event){
if(event == MotionEvent.ACTION_DOWN){
pressed = true;
}
else if(event == MotionEvent.ACTION_UP){
pressed = false;
}
return true;
}
}
注册按钮:
button.setOnTouchListener(new ButtonDownListener());
答
像这样:
public void foo() {
Button mButton = (Button) findViewById(R.id.mButton)
mButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
mBoolean = true;
return true;
case MotionEvent.ACTION_UP:
mBoolean = false;
return true;
default:
return false;
}
}
});
}
诚然有一些问题与多线程操作与上面的代码(例如,所讨论的布尔应该可能是原子等),但这是典型的实现n单触式听众。多点触控监听器为交换机增加了几个例子,但这个想法仍然是一样的。
+0
我无法实现它的工作 – user1293780 2012-03-28 12:49:02
+0
你是什么意思?不会编译?不会改变布尔值?应该受此布尔值影响的代码没有运行? – JRaymond 2012-03-28 16:44:31
我不能得到它的工作:( – user1293780 2012-03-28 12:39:48
JRaymond和我有几乎相同的建议...什么不适合你? – 2012-03-28 14:42:39
现在我发现了一个解决方案,我不得不将“MotionEvent.Action_UP”更改为“ MotionEvent.1“ – user1293780 2012-03-29 11:05:07