Страницы

Поиск по вопросам

суббота, 8 июня 2019 г.

Кастомная кнопка. Анимация одной кнопки при нажатии на другую

В меню игры нужна кнопка для выбора режима игры. Обычный выпадающий spinner не подходит. Захотелось вот такую штуку:
Начать игру < Режим 1 > Рекорды Настройки Выход
Либо стрелки будут вызывать анимацию движения кнопки и вместо Режим 1 выйдет кнопка Режим 2. Важно чтобы была плавная анимация. Вот думаю как же это реализовать. Ну первая стрелка это кнопка , посередине ImageView ? или не кликабельная кнопка описанная в xml как анимированная. При нажатию на стрелку нужно вызвать анимацию ухода ImageView в правую часть экрана и прихода уже с другим текстом с левой части экрана. (даже лучше использовать TextView с backgroud) Ну в общем я думаю понять, что я хочу совсем не сложно. Хочу понять как это реализовать правильно, чтобы не учиться на своих ошибках, времени на это к сожалению нет.
Попробовал класс Animation, в нём 4 типа анимации, вот гифка вначале статьи. Есть вариант с уходом кнопки вправо и возвратом так же справа, не знаю можно ли её адаптировать так чтобы возврат был с левой стороны экрана и вообще можно ли в процессе анимации в нужный момент менять текст кнопки?


Ответ

Можно использовать LinearLayout с ImageView/TextSwitcher/ImageView
Про TextSwitcher можно почитать здесь
Анимацию в одну сторону устанавливайте так:
in = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left); out = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right);
в другую, вам понадобится такой класс:
public class ReverseInterpolator implements Interpolator { @Override public float getInterpolation(float paramFloat) { return Math.abs(paramFloat -1f); } }
использовать, прямая:
in.setInterpolator(new LinearInterPolator()); out.setInterpolator(new LinearInterPolator());
обратная:
in.setInterpolator(new ReverseInterpolator ()); out.setInterpolator(new ReverseInterpolator ());
Другой вариант:
Не использовать TextSwitcher, а собрать анимацию самому. Плюсы - можно анимировать любые View. Минусы - надо самому прописывать всю анимацию. Хотя это не так сложно. В приведенных вами ссылках есть варианты. Если что-то по ним не понятно - спросите.

Комментариев нет:

Отправить комментарий