Как реализовать жест открытия списка в Android - PullRequest
5 голосов
/ 16 февраля 2012

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

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

enter image description here

enter image description here

Снимки экрана взяты из проекта с открытым исходным кодом iOS, найденного здесь .

Вопрос в том, как бы вы реализовали жест «открытия списка», подобный тому, который я вижу все чаще и чаще в приложениях для iPhone / iPad, но для Android?

Редактировать 1, идея 1:

Хорошо, первая идея, AFAIK Жест Pinch чем-то похож на жест перетаскивания, поэтому я думаю, мы можем получить координаты X и Yиз двух пальцев на экране?

Далее может помочь ответ на этот вопрос , основная идея такова:

Получить индексную позициюпервый видимый элемент в списке

Получить индексную позицию последнего видимого элемента в списке

Итерация от первого индекса до последнего с помощью функции getChildAt

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

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

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

Кто следующий?:)

Обновление:

Спасибо за подсказку @rhlnair, я пользуюсь случаем, чтобы сказать всем, что я начал работать над этимВ свободное время вы можете помочь мне в этом.

Проект находится на https://github.com/arnaudbos/Android-GestureListView. Я запустил две разные реализации в двух разных ветках и хотел бы, чтобы кто-нибудь создал новую ветку.

У меня есть кое-что действительно обнадеживающее в ветке "попытка-через-масштаб-детектор жестов", но некоторые побочные эффекты от ListView.

Давай, ребята!

Ответы [ 2 ]

1 голос
/ 26 февраля 2012

кажется сложной задачей ..

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

https://github.com/commonsguy/cwac-touchlist

0 голосов
/ 17 февраля 2012

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

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

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

См. Раздел ввнизу, где они используют слушателя масштаба: http://android -developers.blogspot.com / 2010/06 / making-sense-of-multitouch.html

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

...