Первая причина, по которой ваша кнопка заканчивается неправильным вращением, заключается в том, что некоторые щелчки учитывают «неправильное» вращение.
Вторым является то, что вы не обновляете логическое значение «нажал» при нажатии кнопки. Я бы порекомендовал использовать ObjectAnimator, так как вам не нужно полагаться на текущую позицию поворота для поворота.
public void onClick(View v){
ObjectAnimator.ofFloat(myButton, "rotation", clicked ? 90f : 0f).start();
clicked = !clicked
}