Выдвигающаяся панель.

Интерфейс, диалоги, темы, стили, меню
Ответить
Аварский
Сообщения: 7
Зарегистрирован: 16 фев 2014, 09:13

Выдвигающаяся панель.

Сообщение Аварский » 19 окт 2014, 13:28

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

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

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

Вот. С помощью каких инструментов можно это сделать. Пробовал DrawableLayout, но он не выдвигает панель на всю ширину экрана. ТОчнее не принимает параметр match_parent.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Выдвигающаяся панель.

Сообщение doter.ua » 19 окт 2014, 13:34

Минутка гуглерства привела к http://developer.android.com/intl/ru/tr ... rawer.html правда там большая панель, но все же похожа на описанную тобой штуку.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аварский
Сообщения: 7
Зарегистрирован: 16 фев 2014, 09:13

Re: Выдвигающаяся панель.

Сообщение Аварский » 19 окт 2014, 13:47

doter.ua писал(а):Минутка гуглерства привела к http://developer.android.com/intl/ru/tr ... rawer.html правда там большая панель, но все же похожа на описанную тобой штуку.

Я английский не знаю. А по русским источникам, он не выдвигается на всю ширину экрана. а мне нада, чтобы на всю ширину выдвигалось.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выдвигающаяся панель.

Сообщение Foenix » 19 окт 2014, 15:18

он выдвигается на ту ширину, которая ему задана и по высоте он тоже такой, как ему задают, и может выдвигаться как слева так и справа.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

mega94
Сообщения: 13
Зарегистрирован: 06 сен 2014, 13:01

Re: Выдвигающаяся панель.

Сообщение mega94 » 21 окт 2014, 11:06

Думаю к вам http://habrahabr.ru/post/213193/ на помощь

Аварский
Сообщения: 7
Зарегистрирован: 16 фев 2014, 09:13

Re: Выдвигающаяся панель.

Сообщение Аварский » 02 ноя 2014, 14:06

Foenix писал(а):он выдвигается на ту ширину, которая ему задана и по высоте он тоже такой, как ему задают, и может выдвигаться как слева так и справа.
не могу понять как его раскрыть на всю ширину для всех экранов. Не нашел в интернете ни одного примера.

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: Выдвигающаяся панель.

Сообщение парень » 03 ноя 2014, 11:24

Аварский писал(а):
Foenix писал(а):он выдвигается на ту ширину, которая ему задана и по высоте он тоже такой, как ему задают, и может выдвигаться как слева так и справа.
не могу понять как его раскрыть на всю ширину для всех экранов. Не нашел в интернете ни одного примера.
Создайте новый проект с NavigationDrawer. Затем найдите в папке layout файл с "разметкой" страницы. Выдвигающийся список - это ListView - ему можно задать ширину. Возможно можно указать на весь экран... Не пробовал...

По мне так это решение проще сделать анимацией. Когда я начинал изучать андроид (первые числа декабря 2013 года :) ), старался писать с поддержкой 2.х андроид. И наткнулся на библиотеку NineOldAndroid. Предельно простая в использовании...

Примерный алгоритм под Вашу задачу:
Создать layout, который надо выдвигать, с обработчиками нажатий на те места по которым Вы хотите "сворачивать"\"разворачивать". Ширину задать math_parent
Затем в коде:
[syntax=java5]
...
View itemView = inflater.inflate(R.layout."ваш layout", parent, false); // этого кода много в уроках.
// инициализируем обработчики кликов, для сворачивания\разворачивания.

ViewHelper.setPivotX(itemView, 0); // это уже код связан с библиотекой - экспериментируйте. Или Google.Translate на сайте библиотеки. Точно не вспомню этот ли метод нужен, это вроде для определения координаты X на нашем объекте. Знаю точно - можно и без него обойтись. Но я почему то я его использую )))

ObjectAnimator.ofFloat(itemView, "translationX", xFrom, xTo).start(); // для ItemView запускается анимация движения

[/syntax]

xFrom - откуда, xTo - куда. Как узнать ? Я делал так: узнавал ширину экрана. xFrom= -1*ширина экрана. (т.е. за экраном прячем) + " ширина нужной видимой части". xTo=0+ " ширина нужной видимой части"... для сворачивания, меняем местами xFrom и xTo

Также можно думаю использовать ViewPager. Смотреть соответствующий урок.
Я английский не знаю.
Отформатируйте свой жесткий диск и забудьте о программировании... :shock: :? :o

ПС. Я тоже не знаю английский. При этом живу в англоговорящей стране, и не хера не понимаю о чем окружающие говорят.
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

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

Аварский
Сообщения: 7
Зарегистрирован: 16 фев 2014, 09:13

Re: Выдвигающаяся панель.

Сообщение Аварский » 03 ноя 2014, 16:45

парень писал(а):
Аварский писал(а):
Foenix писал(а):он выдвигается на ту ширину, которая ему задана и по высоте он тоже такой, как ему задают, и может выдвигаться как слева так и справа.
не могу понять как его раскрыть на всю ширину для всех экранов. Не нашел в интернете ни одного примера.
Создайте новый проект с NavigationDrawer. Затем найдите в папке layout файл с "разметкой" страницы. Выдвигающийся список - это ListView - ему можно задать ширину. Возможно можно указать на весь экран... Не пробовал...

По мне так это решение проще сделать анимацией. Когда я начинал изучать андроид (первые числа декабря 2013 года :) ), старался писать с поддержкой 2.х андроид. И наткнулся на библиотеку NineOldAndroid. Предельно простая в использовании...

Примерный алгоритм под Вашу задачу:
Создать layout, который надо выдвигать, с обработчиками нажатий на те места по которым Вы хотите "сворачивать"\"разворачивать". Ширину задать math_parent
Затем в коде:
[syntax=java5]
...
View itemView = inflater.inflate(R.layout."ваш layout", parent, false); // этого кода много в уроках.
// инициализируем обработчики кликов, для сворачивания\разворачивания.

ViewHelper.setPivotX(itemView, 0); // это уже код связан с библиотекой - экспериментируйте. Или Google.Translate на сайте библиотеки. Точно не вспомню этот ли метод нужен, это вроде для определения координаты X на нашем объекте. Знаю точно - можно и без него обойтись. Но я почему то я его использую )))

ObjectAnimator.ofFloat(itemView, "translationX", xFrom, xTo).start(); // для ItemView запускается анимация движения

[/syntax]

xFrom - откуда, xTo - куда. Как узнать ? Я делал так: узнавал ширину экрана. xFrom= -1*ширина экрана. (т.е. за экраном прячем) + " ширина нужной видимой части". xTo=0+ " ширина нужной видимой части"... для сворачивания, меняем местами xFrom и xTo

Также можно думаю использовать ViewPager. Смотреть соответствующий урок.
Я английский не знаю.
Отформатируйте свой жесткий диск и забудьте о программировании... :shock: :? :o

ПС. Я тоже не знаю английский. При этом живу в англоговорящей стране, и не хера не понимаю о чем окружающие говорят.

Так я сам с помощью анимации давно сделал. Кнопки уже не актуальны. А мне нужен drawerlayout, чтобы можно было с помощью жестов передвигать его, туды-сюды....

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выдвигающаяся панель.

Сообщение Foenix » 03 ноя 2014, 19:36

странно, значит если анимацию ты сделал, то знаешь как узнать ширину экрана..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аварский
Сообщения: 7
Зарегистрирован: 16 фев 2014, 09:13

Re: Выдвигающаяся панель.

Сообщение Аварский » 03 ноя 2014, 20:35

Foenix писал(а):странно, значит если анимацию ты сделал, то знаешь как узнать ширину экрана..
ладно, понял вашу идею. А так в анимации я проценты использовал)

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Выдвигающаяся панель.

Сообщение doter.ua » 03 ноя 2014, 21:46

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

Код: Выделить всё

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аварский
Сообщения: 7
Зарегистрирован: 16 фев 2014, 09:13

Re: Выдвигающаяся панель.

Сообщение Аварский » 06 ноя 2014, 09:39

Реализовал с помощью DrawerLayout. Четко получилось. ))
1screen.png
1screen.png (23.63 КБ) 11973 просмотра
2screen.png
2screen.png (35.47 КБ) 11973 просмотра
3screen.png
3screen.png (31.48 КБ) 11973 просмотра

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Выдвигающаяся панель.

Сообщение alexmx » 09 ноя 2014, 20:42

А я наверное мазахист, так как хочу реализовать подобное на канве (((

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Выдвигающаяся панель.

Сообщение doter.ua » 10 ноя 2014, 16:09

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

Ответить