我正在尝试实现一个按钮监听器,当按住按钮时,该按钮监听器将值设置为true 并在实现时将其设置为false
但我怎么能这样做?
答案 0 :(得分:3)
这适合你吗?
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());
答案 1 :(得分:1)
像这样:
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;
}
}
});
}
当然,使用上面的代码存在多线程操作的一些问题(例如,有问题的bool可能应该是原子的等等),但它是单个触摸侦听器的典型实现。多点触控监听器为交换机增加了一些案例,但这个想法仍然是一样的。