Pull to refresh

Comments 36

Я тоже на днях начал изучать Google Material Design, эта стрелка очень понравилась. Сразу же заверстал ее в CSS: codepen.io/TecHMeaT/pen/Ckwux
Красиво, только в Android переход из стрелки в три полоски происходит по часовой стрелке, а у тебя против.
По обновлённым гайдам надо меню поверх Action bar показывать.
Можно пожалуйста ссылку?
Это, получается, Toolbar должен быть внутри DrawerLayout.

Так, кстати, сделано в приложении Play Пресса.
Если раньше я мог закрыть меню 4-мя способами (тап по области экрана, иконка, Back, свайп), то новые диз. доки оставляют лишь 3 варианта =\
Вот только в самом Google Play с новым дизайном всё равно меню как и раньше выползает (не поверх Action Bar'а).
Да, только чуваки из Гугла сказали так не делать :) Типа не успели еще.
В Google Play всё вообще странно.
По гайдлайнам (и прошлым, и нынешним) контент должен затемняться, когда открывается боковое меню. На Главной странице затемняется не только контент, но и сам ActionBar. Непонятно, как они это сделали, а главное — зачем?
В то же время, на странице Мои приложения всё ок.
Допускаются оба варианта. И тот, где меню перекрывает панель, — весьма уродлив. В чему делать целый класс с анимированной Drawable, чтобы ее не было видно из-за меню? Где логика?
Допускается что угодно, но по гайдлайнам — тот, который перекрывает.
Ну а вкусы — дело каждого :)
Анимация гамбургера — просто приятная мелочь, главное консистентность.
Верно. К счастью, сам гугл отступает от своих же гайдлайнов. Тот же маркет к слову.
Да и не все то, что разработали дизайнеры, — истина в последней инстанции. И внутренний перфекционист разработчика всегда об этом напомнит.
Анимация гамбургера
Сэндвич же… =)
UPD. промахнулся немного ответом(

Тут вот есть:
Material Design on Android Checklist
Navigation drawer

Figure 7. Navigation drawers
with material design.
Signature element: If the app uses a navigation drawer, it follows the newer material design interactions and styling (Figure 7). The drawer appears in front of the app bar. It also appears semitransparent behind the status bar.
In code: Implement drawers using the DrawerLayout widget from the support library, along with the new Toolbar widget discussed above. See this Stack Overflow post for more.

Вот сама ссылка как это сделать в приложении.

Ну или тут:
Structure Side Nav
в тоже время в новом Google Play поведение отличается: drawer выезжает ниже ActionBar'a.
А в Google Play Пресса все ок. Тут уж как всегда странный(немного безалаберный наверное?) подход от Гугла.
Думаю со временем исправят.
Ну кстати в прессе тоже не совсем до конца все правильно: drawer должен в статус баре тоже отображаться.
А у вас уже 5.0? Проверить не могу пока(
Думаю со временем исправят.

А тем временем…

Вот, составил список Android-приложений от Google, в которых есть боковое меню (снимок, возможно, не полный):
  • Gmail — боковое меню над Toolbar, присутствует анимация Menu-to-Arrow
  • Google+ Фото — боковое меню под Toolbar, присутствует анимация Menu-to-Arrow
  • Hangouts — боковое меню под ActionBar, анимация старая
  • Play Книги — боковое меню над Toolbar, присутствует какая-то анимация Menu-to-Arrow, как здесь: codepen.io/anon/pen/Gcnie
  • Play Маркет — боковое меню под Toolbar, присутствует анимация Menu-to-Arrow
  • Play Пресса — боковое меню над Toolbar, присутствует анимация Menu-to-Arrow
  • Play Фильмы — боковое меню над Toolbar, присутствует анимация Menu-to-Arrow
  • YouTube — не обновлялся боковое меню под ActionBar, анимация старая
  • Диск — боковое меню под ActionBar, вместо иконки статическая картинка — три полоски
  • Карты — ActionBar нет, боковое меню вызывается кнопкой
  • Новости и погода — не пользовался, но так показано на скриншотах в Google Play боковое меню под Toolbar


Мда. На фоне стараний Google унифицировать интерфейс приложений не только самой компании, но и всей экосистемы Android, такое многообразие одного и того же элемента интерфейса выглядит странно.
Некоторые приложения были обновлены, поэтому нужно и список обновить:
  • Gmail — боковое меню над Toolbar, анимации нет
  • Hangouts — боковое меню над Toolbar, анимации нет
  • YouTube — боковое меню над Toolbar, присутствует анимация Menu-to-Arrow
  • Новости и погода — боковое меню над Toolbar, присутствует анимация Menu-to-Arrow
Карты, Play market и Play книги еще
Я их написал ещё раньше.
Да, но они были обновлены.
И что в них измененилось по сравнению с моим первым списком?
Вчера пришло обновление Google Play:
  • Play Маркет — боковое меню над Toolbar, присутствует анимация Menu-to-Arrow
  • Play Маркет — боковое меню над Toolbar, анимации нет
  • Диск — боковое меню над Toolbar, присутствует анимация Menu-to-Arrow
  • Карты — боковое меню над Toolbar, анимации нет


P. S. Кому-то нужен этот список? Если да, напишите, пожалуйста, об этом, потому что я планирую перестать обновлять его.
К чему вся статья? Ради одной единственной строчки кода, которая ещё и использовалась на предыдущих версиях для тех же целей?
Нет. Она была и раньше, просто сейчас её анимацию обновили. v4 v7
У вас введение и содержание расходятся. После слов
Мне стало интересно, как это реализовано
я ожидал увидеть реализацию анимации перехода burger button в стрелку, а увидел самое обычное использование Toolbar вместо ActionBar. Поменяйте одно из двух, не смущайте народ. :)
В данной реализации возникает проблема, как прослушивать ивенты закрытия и открытия меню, если мы в качестве листенера передаем Toolbar, у которого нету аналогичного метода?
Эм… ActionBarDrawerToggle же не поменялся.
Когда я вместо
drawerLayout.setDrawerListener(toggle);

указываю листенер
drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener());

пропадает анимация стрелки
Нашел решение
mToggle = new ActionBarDrawerToggle(this, mMenu, mToolbar, R.string.open, R.string.close) {
            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
              
            }

            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);

            }

            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                super.onDrawerSlide(drawerView, slideOffset);

            }

            @Override
            public void onDrawerStateChanged(int newState) {
                super.onDrawerStateChanged(newState);
            }
        };
Sign up to leave a comment.

Articles