24 ноября 2014 г.

Не так давно Google выпустила очередное мажорное обновление своей операционной системы под названием Android. Сначала его можно было наблюдать под кодовым названием Android L, но к моменту релиза ОС получила название Android 5. Но не это важно. Для данной заметки важно то, что изменилась концепция дизайна всей ОС. Появилось такое понятие как Material Design.

Material Design - новая концепция, которая использовалась при построении визуального интерфейса всей ОС. Вышло неплохо, по моему мнению. Можно бесконечно обсуждать и размышлять о том, как двигалась мысль и фантазия дизайнеров при создании интерфейсов. Но сегодня  я бы хотел опустить все эти обсуждения, а поговорить конкретно и по теме.

В стандартных интерфейсах ОС в приложениях имеется возможность использовать Action Bar - панель вверху окна приложения, а также боковой навигационной шторки (Navigation Drawer). Action Bar может содержать иконку приложения, навигационные элементы, какие-то управляющие действия и т.д. В Android 5 несколько изменился внешний вид Home кнопки в Action Bar: появилась анимация. Кнопка может менять свой внешний вид из трех параллельных горизонтальных линий в стрелку. А раз появилась анимация, то захотелось использовать её в своих целях. Мне потребовалось менять состояние кнопки при наступлении определённых событий в моём приложении.

Ниже предлагается решение этой проблемы. Решение, которое я нашел на просторах сети:

public void morphUpButtonToArrow() {
    ValueAnimator anim = ValueAnimator.ofFloat(0, 1);
    anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float slideOffset = (Float) valueAnimator.getAnimatedValue();
            mDrawerToggle.onDrawerSlide(mDrawerLayout, slideOffset);
        }
    });
    anim.setInterpolator(new DecelerateInterpolator());
    anim.setDuration(300);
    anim.start();
}

Обратная анимация абсолютно идентична и отличается только одной первой строчкой метода

public void morphUpButtonToList() {
    ValueAnimator anim = ValueAnimator.ofFloat(1, 0);
Автор: Артур Минимулин ⚫ 24 ноября 2014 г.Тэги: Совет, Дизайн, Google, Релизы, Android, Java