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