Пользовательский вид в Android - PullRequest
       2

Пользовательский вид в Android

0 голосов
/ 29 сентября 2011

Мне нужны некоторые ценные советы от вас, ребята ... У меня есть пользовательский интерфейс, в котором я должен перетаскивать объекты из одного вида в другой.У меня есть приблизительный эскиз этого пользовательского интерфейса ниже enter image description here

Я думаю, что для этого мне нужно создать собственное представление.Я должен перетащить квадрат и шар из сумки 1 и сумки 2 [обе сумки можно прокручивать, каждый может содержать от 10 до 60 предметов) и бросить их в шкаф один за другим.и позже я должен найти количество предметов в шкафу.Предметы в шкафу должны быть в хорошем состоянии [может быть ... как 6 подряд].

  • С чего начать?
  • Сколько пользовательских представлений следует использовать?
  • Существует ли простое и эффективное решение для пользовательского интерфейса для этого?

Удачного кодирования ..!

Ответы [ 3 ]

2 голосов
/ 04 октября 2011

Я бы предложил проект с тремя различными объектами GridView, расположенными внутри ViewGroup, который поддерживает перетаскивание объектов из одного GridView в другой.Объекты будут собственными подклассами ImageView, так что у вас будет место в коде для поддержки какого-либо протокола перетаскивания и потому что вы, вероятно, захотите связать некоторые данные, специфичные для вашего приложения, с перетаскиваемыми объектами..

Что касается протокола перетаскивания, вы можете рассмотреть адаптацию платформы перетаскивания Android Launcher или текущих классов перетаскивания , описанных разработчиками Android.' Веб-сайт.Мне нечего сказать о текущих классах перетаскивания.Я еще не пробовал их, но понимание их в моем списке дел.Тем не менее, я сделал адаптацию кода Launcher, и я написал его в своем блоге и разместил там демонстрационные приложения и исходный код.См. Drag-Drop для Android GridView .

С платформой, созданной в Launcher Android, у вас есть хороший набор классов и интерфейсов для работы.Некоторые из объектов включают в себя: DragLayer, DragSource, DropTarget, DragController, DragView.DragLayer - это пользовательская ViewGroup, в которой происходят все операции перетаскивания.Он делегирует обработку всех событий касания DragController, который является объектом, который выполняет фактическое перемещение объектов на экране.При этом он взаимодействует с объектами DropTarget, чтобы предоставить пользователю визуальную обратную связь о том, что что-то перетаскивается, и что место, куда можно что-то уронить, доступно.DropTarget - это объект, где что-то может быть отброшено.DragSource - это интерфейс для объектов, которые можно перетаскивать в DragLayer.Платформа Launcher хороша тем, что дает вам возможность подумать о перетаскивании и о том, как вы хотите разделить обязанности, определенные платформой.

Причина, по которой я предлагаю GridViews для вашей проблемы, заключается в том, что она звучиткак будто ты уже так думаешь.Шкаф имеет «возможно 6 в ряд», так что это может быть GridView с одной или несколькими строками в зависимости от того, как у вас есть место на экране.GridView также будет работать для контейнера, который содержит квадраты и круги.Если это хорошо подходит, вы можете изучить код в моем руководстве по перетаскиванию и посмотреть, облегчает ли это вам перемещение объектов из одного GridView в другой.

В моей демонстрационной программе я получил собственный подкласс ImageView, который я назвал ImageCell.Это виды, которые находятся на сетке.ImageCell позволяет перетаскивать объекты с них на них.Некоторое время, пока я работал над учебником, у меня тоже был собственный класс GridView, но в итоге я получил стандартный GridView.Звучит так, как будто вам нужен пользовательский GridView, потому что звучит так, как будто он находится в шкафу и отличается от других разделов.Наличие этого дает вам удобное место для методов, о которых вы еще не думали.

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

0 голосов
/ 29 сентября 2011

Я думаю, что bag1, bag2 и шкаф могут быть тремя экземплярами одного настраиваемого настраиваемого представления (назовем его CustomBagView).

CustomBagView s должен отвечать за отображение элементов (например, с использованием вида сетки вида изображения).

Я думаю, что им не нужно будет обрабатывать drag & drop напрямую, но они должны поддерживать

  • удаление и добавление элементов
  • предоставляет setOnItemTouched(Interface_class) установщик обратного вызова.

Затем вам нужно будет кодировать пользовательское представление Контейнера (назовем его BagContainerView), которое будет содержать три пакета и обрабатывать перетаскивание из пакетов.

Вы предоставите handleDrag обратный вызов для каждой сумки, используя CustomBagView.setOnItemTouched, затем отследите движение пальца в ней.

Когда перетаскивание закончится, вы должны найти, где оно заканчивается, найти нужный «customBagView» и попросить добавить элемент в свой список.

0 голосов
/ 29 сентября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...