тут есть некое дублирование кода можно свитч внутри которого действия отвечают за изменения положения кнопки вынести в отдельную функцию
+ вот это штука activity.getTextureSize().y * BUTTON_JUMP_AMPLITUDE повторяется везде и ее можно вынести в локальную переменную этой функции или в качестве параметра
я бы сделал интерфейс этой фукнции такой changeButtonPosition(boolean up, int amplitude, ) {
switch (button.getId()) { case ... button.setY( button.getY() + (up ? amplitude : -amplitude)) case ...} как то так, а потом бы следовал другой свитч который определяет именно фукнционал кнопки