Я бы предложил проект с тремя различными объектами 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, потому что звучит так, как будто он находится в шкафу и отличается от других разделов.Наличие этого дает вам удобное место для методов, о которых вы еще не думали.
Я надеюсь, что некоторые из этих предложений окажутся полезными.