Is it possible to capture release of a button just as we capture click using onClickListener()
and OnClick()
?
I want to increase size of a button when it is pressed and move it back to the original size when the click is released. Can anyone help me how to do this?
You should set an OnTouchListener on your button.
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
increaseSize();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
resetSize();
}
}
};
You have to handle MotionEvent.ACTION_CANCEL as well. So the code will be:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP ||
event.getAction() == MotionEvent.ACTION_CANCEL) {
increaseSize();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
resetSize();
}
}
};
use an OnTouchListener or OnKeyListener instead.
You might be able to do this by overriding the onKeyDown
and onKeyUp
. These are both inherited from android.widget.TextView
. Please see the android.widget.Button
doc for (a bit) more info.
Eric Nordvik has the right answer except that
event.getAction() == MotionEvent.ACTION_UP
never got executed for me. Instead I did implement
button.setOnClickListener(new OnClickListener() {
@Override
public boolean onClick(View v) {
resetSize();
}
};
for the touch ACTION_UP.