You have to program it yourself in your onTouch method: What you describe happen because the touch event is triggered with param Event.DOWN when touched, then with param Event.MOVE when your finger moves and finally with Event.UP when releasing.
So you will have to detect the touch DOWN event, start a timer that will put the windows up every x milli seconds, then stop when detecting the touch UP event
Here is an example:
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
startTimer(); // The timer should repeatly call itself
}
else if(event.getAction()==MotionEvent.ACTION_UP)
{
stopTimer(); // The timer should stop
}
}
EDIT: If all you need is the equivalent of a isClicked() method, you can juste store a boolean as class variable: in the above code, replace "startTimer()" by "mClicked = true", and "stopTimer()" by "mClicked=false". Then anywhere in your class you will be able to check if the button is currently clicked