Настройка боковой панели андроид

Реализуем боковую навигацию в Android

В последнее время среди паттернов проектирования мобильных приложений наблюдается устойчивая тенденция к упрощению взаимодействия пользователя с конечным приложением. В частности, особый упор начал делаться на распознавание жестов. Жесты интуитивно понятны и естественны, они удобны и позволяют избавиться от лишних элементов интерфейса, упрощая приложение.

Хороший пример правильного использования жестов — набирающая популярность боковая навигация. На Хабре ранее публиковалась статья о боковой навигации как паттерне, но в ней ничего не было сказано о реализации.

К сожалению, проектов, реализующих боковую навигацию, крайне мало, да и большая часть из них работает медленно и неудобно. Мне повезло: спустя некоторое время после начала поиска я наткнулся на проект ActionsContentView, который, на мой взгляд, работал хорошо и быстро. В проекте были решены все те проблемы, с которым я столкнулся когда-то сам. После внимательного изучения проекта он был немного переписан мною под собственные нужды.

Изначально я хотел в этой статье расписать как и способ открытия бокового меню по клику, так и способ открытия меню жестом. Однако ближе к концу статьи стало очевидно, что обработка жестов и открытие навигации по ним достаточно объемный вопрос, в котором также следует учесть множество особенностей. Статья в таком случаем получается настолько огромная, что читать ее просто неудобно.
Поэтому я решил описать пока лишь реализацию бокового меню по клику.

Архитектура приложения

В качестве слоя с контентом мы будем использовать Fragment, меню же у нас будет располагаться в Activity на заднем плане.
Преимущество фрагментов очевидно: фактически, мы сможем использовать внутри них все преимущества Activity, плюс из Activity слой с фрагментом видится как View, что позволит нам использовать стандартные и привычные методы работы с ним как со слоем.

Activity мы сделаем статичным, при переходах внутри фрагмента у нас должен меняться только сам фрагмент. Также необходимо предусмотреть во фрагменте метод старта нового фрагмента в этом же окне, а также методы открытия/закрытия меню.

Для реализации этого создадим интерфейс, описывающий методы взаимодействия фрагмента и Activity:

Реализуем его в Activity:

Так как нам необходимо иметь доступ вышеперечисленным методам из любого фрагмента с контентом, расширим класс Fragment и добавим их:

В дальнейшем все наши фрагменты мы будем наследовать от него.

Создаем разметку, реализуем смену фрагментов

Теперь нам потребуется создать список, имитирующий само меню, и заполнить его. Также нам потребуется сам фрагмент с контентом.

Файл разметки Activity невероятно прост:

Так же, как и его заполнение:

Создадим и добавим теперь наш фрагмент:

По этой кнопке, как вы уже догадались, мы будем открывать или закрывать меню.

Реализуем пока механизм смены фрагментов:

Добавим получившийся фрагмент поверх Activity:

Каркас готов, теперь можно реализовывать саму боковую навигацию.

Боковая навигация по клику

Метод toggleMenu() автоматически в зависимости от состояния меню открывает или закрывает его. Соответственно, нам необходимо хранить состояние.
Также нам необходимо иметь значение координаты, до которой меню будет «доезжать» в случае открытия. Так как дисплеи мобильных телефонов имеют разную ширину, хранить необходимо коэффициент, а само значение вычислять исходя из разрешения телефона.
Желательно также указать и продолжительность действия анимации открытия и закрытия в миллисекундах.

Теперь немного о реализации класса, который будет прокручивать меню. Для наших целей мы будем использовать класс Scroller, инкапсулирующий прокрутку. Фактически этот класс принимает в себя начальную точку и значение смещения, а затем в течении некоторого времени генерирует некое число.

Чаще всего Scroller используют внутри потока, рекурсивно вызывающего себя. Во всех примерах, которые я встречал, Scroller используется именно так.
Возможно его можно использовать и совместно с бесконечным циклом в отдельном потоке, однако я решил использовать именно такую реализацию.

За открытие/закрытие меню у нас отвечают методы openMenu() и closeMenu(). Этим методы реинициализируют переменные начала скроллинга и запускают метод fling(), занимающийся, собственно, сдвигом.

В методе fling() после ряда проверок запускается отсчет Scroller’a, после же запускается поток.
Метод run() потока выполняет два действия:

  • Пока анимация присутствует, с помощью View.scrollTo() сдвигает элемент на значение, указываемое Scroller
  • Рекурсивно запускает свой поток еще раз, для последующей анимации

Собственно, сам класс, сделан внутренним:

Теперь нам осталось лишь инициализировать такое поле в классе и заполнить toggleMenu():

Читайте также:  Аэропорт сити для андроид взлом

Готово. Мы имеем быстрое боковое меню, открывающееся по кнопке. Единственный баг — меню прокручивается во время скроллинга по фрагменту. Для устранения этого бага необходимо проверять, входят ли координаты нажатия пальца в область фрагмента и в зависимости от этого определять, используется ли событие или нет.

Вот теперь все работает.
Полученное боковое меню очень быстро работает на самых разных телефонах, при этом у нас имеется готовое архитектурное решение организации смены экранов.

Источник

Настройка боковой панели андроид

Краткое описание:
Сделайте свой телефон быстрее, мощнее и проще

Описание:
Одним из преимуществ флагманских смартфонов является краевой экран и крайняя панель, которые позволяют пользователям запускать любимые приложения, переключать системные настройки, вызывать определенные контакты, управлять воспроизведением музыки, проверять события календаря и даже получать доступ к папкам и файлам прямо из боковой панели приложения. Боковая панель открывается мягким скользящим жестом.

Edge Action — Edge Screen, как следует из названия, привносит эту замечательную особенность в буквальном смысле на любые устройства, и вы получаете возможность пользоваться многими преимуществами на вашем телефоне или планшете. Таким образом, скачайте Edge Action — Edge Screen на свое устройство бесплатно, наслаждайтесь приложением и воспользуйтесь функциями на вашем телефоне.

Чего ожидать от Edge Action — Edge Screen?

Edge Action — Edge Screen, бесплатное приложение боковой панели, имеющее чистый и аккуратный дизайн, и интерфейс настолько удобен для пользователя, что не стоит гениально разбираться во всей идее. Вам просто нужно предоставить необходимые разрешения, настроить крайние панели и получить доступ к любимым приложениям, переключению системных настроек, музыкальному проигрывателю и многому другому, запустив различные боковые панели.

Ниже приведен список доступных краевых экранов, доступ к которым можно получить в любом месте.

Обратите внимание, что в зависимости от боковой панели приложения, которую вы добавляете на свою краевую панель, вам может потребоваться предоставить определенные разрешения. Разрешения используются исключительно для функциональности приложения, и мы не собираем никаких личных данных.

Настало время увеличить вашу производительность.

После того, как вы полностью сконфигурировали приложение и добавили необходимые боковые панели, вам больше не нужно добавлять ярлыки быстрых системных настроек, а также ярлыки приложений на домашний экран для быстрого доступа к ним.

Вы также можете использовать свой телефон одной рукой, так как вам не нужно растягивать палец, чтобы перейти к кнопкам «Домой», «Назад» и «Недавние», а также к панели уведомлений.

Загрузите Edge Action — Edge Screen бесплатно и сообщите нам о любых ошибках, вопросах, пожеланиях или других предложениях.

  • Приложения – добавьте свои любимые и часто используемые приложения в боковую панель и откройте их, просто сдвинув.

Контакты – как обычно вы звоните или отправляете сообщение своим частым контактам? Как насчет добавления их в панель «Контакты» и получать доступ к ним практически из любого места?

Быстрые настройки – ваш телефон слишком большой, чтобы открыть панель уведомлений одной рукой? Попробуйте переключить системные настройки из боковой панели приложения.

Виртуальные кнопки – физические кнопки вашего телефона не работают гладко? Панель «Виртуальные клавиши» предоставляет вам программные кнопки, которые работают как «Домой», «Назад», «Экран», «Запись экрана» и «Кнопки питания».

Календарь – вашим встречам и меропреятиям никогда не было проще получить доступ через панель «Календарь».

Журнал вызовов – эта панель позволяет вам получить доступ к журналу вызовов и управлять историей.

Сообщение – быстрый доступ к вашим сообщениям, папкам «Входящие» и «Отправленные».

Калькулятор – простой калькулятор помогает вам быстро и легко выполнять вычисления.

Музыкальный плеер – можете ли вы придумать самый крутой и простой способ контролировать музыку? Давайте попробуем функцию музыкального плеера.

  • Проводник – позволяет вам легко управлять файлами и папками из панели.
  • Версия: 1.8.8 Premium by Balatan (Alex0047)
    Версия: 1.8.9 GP Сообщение №132, автор And_RU
    Версия: 1.8.6 Premium by Balatan (Alex0047)
    Версия: 1.8.5 GP Сообщение №126, автор And_RU
    Версия: 1.8.4 Premium by Balatan (Alex0047)
    версия: 1.4.6 Mod Edge Action (serov_V)
    Версия: 1.8.3 Premium by Balatan (Alex0047)
    Версия: 1.8.1 Premium by Balatan (Alex0047)
    Версия: 1.7.7 GP Сообщение №114, автор And_RU
    Версия: 1.7.4 Premium (Alex0047)
    Версия: 1.7.3 GP Сообщение №106, автор And_RU
    Версия: 1.7.1 GP Сообщение №104, автор And_RU
    Версия: 1.7.3 Premium (Alex0047)
    версия: 1.7.0 Premium Edge Action (And_RU)
    версия: 1.6.6 Premium Edge Action (Alex0047)
    версия: 1.6.3 Premium Edge Action (Alex0047)
    версия: 1.6.2 Premium Edge Action (Alex0047)
    версия: 1.5.8 Premium Edge Action (Alex0047)
    версия: 1.5.7 Premium Edge Action (Alex0047)
    версия: 1.5.6 Premium Edge Action (Alex0047)
    версия: 1.5.5 Premium Edge Action (Alex0047)
    версия: 1.5.4 Premium Edge Action (Alex0047)
    версия: 1.5.3 Premium Edge Action (Alex0047)
    версия: 1.5.2 Premium Edge Action (Alex0047)
    версия: 1.5.1 Premium Edge Action (Alex0047)
    версия: 1.5.0 Premium Edge Action (Alex0047)
    версия: 1.4.6 Premium Edge Action (Alex0047)
    версия: 1.4.4 Premium Edge Action (Alex0047)
    версия: 1.4.3 Premium Edge Action (Alex0047)
    версия: 1.4.2 Rus Edge Action (papasha55)
    версия: 1.4.2 Premium Edge Action (Alex0047)
    версия: 1.4.1 Premium Edge Action (Alex0047)
    версия: 1.4.0 Premium Edge Action (Alex0047)
    версия: 1.3.9 Premium Edge Action (Alex0047)
    версия: 1.3.8 Premium Edge Action (Alex0047)
    версия: 1.3.4 Premium Edge Action (Alex0047)
    версия: 1.3.3 Premium Edge Action (Alex0047)
    версия: 1.3.2 Premium Edge Action (Alex0047)
    версия: 1.3.1 Premium Edge Action (Alex0047)
    версия: 1.2.9 Premium Edge Action (Alex0047)
    версия: 1.2.8 Premium Edge Action (Alex0047)
    версия: 1.2.7 Premium Edge Action (Alex0047)
    версия: 1.2.6 Premium Edge Action (Alex0047)
    версия: 1.2.5 Premium Edge Action (Alex0047)
    версия: 1.2.3 Premium Edge Action (Alex0047)
    версия: 1.2.1 Premium Edge Action (Alex0047)
    версия: 1.2.0 Premium Edge Action (Alex0047)
    версия: 1.1.9 Premium Edge Action (Alex0047)
    версия: 1.1.8 Premium Edge Action (Alex0047)
    версия: 1.1.7 Premium Edge Action (Alex0047)
    версия: 1.1.6 Premium Edge Action (Alex0047)
    версия: 1.1.5 Premium Edge Action (Alex0047)
    версия: 1.1.4 Mod Edge Action (Zeratul)
    версия: 1.1.4 Premium Edge Action (Alex0047)
    версия: 1.1.3 Premium Edge Action (Alex0047)
    версия: 1.1.2 Premium Edge Action (Alex0047)
    версия: 1.1.1 Premium Edge Action (Alex0047)
    версия: 1.1.0 Premium Edge Action (Alex0047)
    версия: 1.0.9 GP Edge Action (Zeratul)
    версия: 1.0.8 Premium Edge Action (Vologhat)
    версия: 1.0.7 Premium Edge Action (Zeratul)
    версия: 1.0.7 Edge Action v1.0.7.apk ( 10.18 МБ )

    Читайте также:  Как стать бета тестером андроид

    Сообщение отредактировал iMiKED — 24.11.21, 04:07

    Источник

    Android Studio: Как сделать боковое меню с помощью NavigationDrawer

    В этой статье давайте разберем, как сделать «крутое» боковое меню с помощью компонента NavigationDrawer.

    Создадим новый проект, пусть он называется NavDraw, так как использовать на этот раз будем не Empty Activity а Navigation Drawer Activity, шаблон заготовку изAndroid Studio.

    После запуска проекта и эмулятора, можно увидеть, как выглядит боковое меню. Справа располагается обычное меню, как сделать которое мы разбирали в прошлых статьях.

    Собственно, создание Navigation Drawer меню заключается в изменении существующей заготовки под свои нужды. Этим и займемся сегодня.

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

    Файл nav_header_main.xml

    Вот конкретно в этом файле nav_header_main мы сейчас изменим название. Я напишу название на свой лад «NavDraw — боковое меню» в этом textview, в следующим TextView указан адрес android studio, но я напишу название своего сайта.

    Картинку я пока менять не буду я не нашел честно говоря, но вы можете в принципе аналогичным образом прописать в папки drawable новую иконку. Они тут расположены в png формате, есть некоторые в xml.

    Можно в принципе использовать либо такие, либо такие, но я пока просто покажу вам где она находится если захотите, будете менять уже под свои нужды. Давайте перезапустим наше приложение и посмотрим, что у нас получится.

    По идее, данные должны обновиться, так работает большинство приложений, кто собирает на Android Studio.

    И в принципе не надо здесь все с нуля как бы переписывать создавать, все уже готово.

    Вот кстати, здесь отличие -меню будет работать, которое находится в правом углу, (три точки) без всяких шаманств, изощрений, не как в прошлый раз. В прошлом видео я вам показывал: прописываете кучу стиле и прочего.

    Файл activity_main_drawer

    Так давайте теперь найдем в папке меню

    Вот непосредственно наши пункты, как видите, здесь схалтурили разработчики этого шаблона — они прописали хардкорно пункт android title прямо в теле xml.

    А в strings.xml ничего не прописано, но мы не будем сейчас создавать новые пункты в strings.xml

    Давайте просто я напишу по-русски так как я вижу, как я понимаю эти пункты, просто и наглядно.

    Большинство людей так и делают, если есть пункт, если есть его айдишник — меняем название и дальше можно будет к нему прицепиться и использовать его для обработчика нажатия на этот пункт.

    Как видите, перевод произошел, я не готовил специально тоже иконки, пока оставим как есть, хотя если вы создадите новый пункт, вам можно будет подобрать иконку, картинку либо вообще ее удалить.

    Читайте также:  Bluetooth tracker для android

    Удалив просто строку android icon пропадет картинка хотя в принципе лучше конечно что-то подготовить. Давайте продублируем предыдущий пункт, внесем изменения в его ID.

    Сделаем пункт по которому приложение будет закрываться, так как бы любимая кнопка начинающего разработчика это Close и Exit — выход и закрыть.

    Я перемещу ее в блок, который видите отделен в отдельном пункте, вот так она выглядит, мы иконку менять не буду, опять же вам уже об этом говорил. Захотите подготовить свой какой-то проект, можете нарисовать свои иконки либо поискать в интернете.

    Так мы перезапустим проект, посмотрим, что у нас изменилась, и у нас произошли изменения. Итак проект перезапустился, откроем меню и как видим, добавился наш пункт.

    Естественно сейчас он не обрабатывает нажатие на кнопку

    Давайте сейчас напишем небольшую процедуру, в которой вместо текста «Hello Word!» будет написано, какая кнопка, какой пункт был нажат.

    Файл content_main.xml

    Для этого в TextView добавим ID, чтобы можно было к нему обращаться программно, я назову его nav_tv.

    В файле MainActivity.java мы объявим переменную TextView tv перед функцией onCreate, также нам нужно будет найти ее через findViewById() и я надеюсь вы уже знаете, как это делается и объяснять вам не надо.

    теперь найдем конструкцию onNavigationItemSelected и в конструкцию if..else допишем

    и укажем текст который будет появляться в центре нашего приложения по нажатию на кнопку.

    Соответственно, для пункта nav_camera, который мы назвали почему-то импорт, потому как на иконке изображен фотоаппарат, мы назовем это действие «Нажата кнопка: Камера», «Нажата кнопка: Галерея»

    Здесь может находиться какая либо процедура, то есть необязательно просто вот одно действие, прямое, сразу передать текст куда то туда то и все, то есть здесь можно вызвать, допустим, дополнительную активность, а скорее всего так вы будете делать, если вы этим интересуетесь, либо фрагмент какой-то откроется, либо новая активность.

    Потому здесь достаточно богатое поле для деятельности, вспомните хотя бы приложение для aliexpress, сколько там пунктов находится всевозможных: магазин, купите, избранное, поделиться и настройки. Кстати, тут есть — инструменты это в принципе почти как настройки.

    Обратите внимание — я добавил функцию finish() , она закроет приложение по нажатию на этот пункт.

    Перезапустили проект и теперь как вы видите при нажатии на пункты меню,(исправлю камера на импорт)можно будет видеть, что наше боковое меню реагирует на воздействие нажмем на выход и приложение закрылось.

    Сейчас немного займемся настройкой декоративного элемента, который у нас отвечает за рисунок и за градиент.

    Градиент в side_nav_bar

    В файле side_nav_bar прописан градиент который находится как background возле картинки.

    Есть центральный цвет, есть начальный цвет, есть конечный цвет и есть угол на который будет повёрнут градиент.

    Я специально не подбирал цвета которые хотел бы поставить сюда ну пока просто в виде эксперимента я вам покажу как это все меняется, как настраивается.

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

    Так изменим угол 135 градусов на 90, и через некоторое время некоторой задержкой обновляется наш градиент и вот сейчас картинка у нас под наклоном, и соответственно, обновилось приложение, и наше меню, изменился в макете наш градиент.

    В принципе, можете подобрать любой переход, от светлого тона к тёмному цвету, либо посередине, чтобы барьер был.

    Можно в принципе поиграться с углом наклона, у вас изменится вид этой шапки, или сделать однотонный цвет, допустим красный — red или #FF0000

    Необязательно использовать градиент, можно указать начальный и конечный одинаковый цвет.

    Давайте перенесем нашу кнопку выход и удалим часть, вот этот блок можно удалить, вместе с разделителем. Вот у нас получится вот такое меню сокращенное. Не обязательно делать либо вы можете добавлять, удалять пункты. Поскольку я удалил часть элементов, то мне нужно подправить код обработчика нажатия на пункты.

    Перезапустим наше приложение, обновилось нашими меню, так оно аккуратно, компактно, если у вас пока много пунктов нет – можете ограничиться небольшим списком.

    Смотрите видео Android Studio: Как сделать боковое меню с помощью NavigationDrawer:

    Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

    Источник

    Оцените статью