Страницы

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

вторник, 31 марта 2020 г.

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

#java #android


В меню игры нужна кнопка для выбора режима игры. Обычный выпадающий spinner не подходит.
Захотелось вот такую штуку: 

                 Начать игру 
                 < Режим 1 > 
                  Рекорды
                 Настройки
                   Выход  


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

Попробовал класс Animation, в нём 4 типа анимации, вот гифка вначале статьи. Есть
вариант с уходом кнопки вправо и возвратом так же справа, не знаю можно ли её адаптировать
так чтобы возврат был с левой стороны экрана и вообще можно ли в процессе анимации
в нужный момент менять текст кнопки? 
    


Ответы

Ответ 1



Можно использовать 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. Минусы - надо самому прописывать всю анимацию. Хотя это не так сложно. В приведенных вами ссылках есть варианты. Если что-то по ним не понятно - спросите.

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

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