Использование платформы Android Drag and Drop в моем обычном приложении Launcher
Я пытаюсь разработать пользовательское приложение запуска (с неограниченным количеством домашних страниц), и мне нужно реализовать Drag and Drop, как это сделано в Launcher2 (android 4.2).
Итак, я нашел два подхода
1) Перетаскивание рамки
2) Используйте путь android launcher2 как реализация DragController, DragSource, как описано здесь.
Но я изо всех сил пытаюсь понять, почему ребята из Android не использовали перетаскиваемую инфраструктуру Drag-Drop, разработанную ими в своем собственном приложении. Кто-нибудь может рассказать о возможном обосновании своего подхода? (Я имею в виду память/производительность)
Спасибо заранее.
Ответы
Ответ 1
Перетаскивание в Android Launcher выполняется как рисунок Overlay внутри той же ViewGroup и в том же окне. Но подход перетаскивания для Android создает отдельное окно с отдельным типом окна.
Устойчивость к ресурсам и памяти по стандартным андроидным методам перетаскивания является более дорогостоящей.
Если производительность очень важна, мое предложение идет в соответствии с пусковой установкой Android, предпочитающей простой и простой подход к стандартным андроидам.
Ответ 2
Структура перетаскивания Android очень проста по сравнению с той, которая используется в приложении Launcher.
В приложении Launcher имеется множество "слоев", а перетаскивание происходит по этим слоям, а именно: "DragLayer", "Рабочая область" и "Все приложения" и т.д. Он использует флаги окон и динамически добавляет/удаляет представления в DragLayer, когда выполняется перетаскивание, и множество действий контролируют перетаскивание. Подробнее см. Файлы DragLayer.java и Workspace.java.
Ответ 3
Структура перетаскивания - это sice api 11.
Я предполагаю, что до этого было написано много кода для пусковой установки, и никто еще не успел реорганизовать его. Но api работает аналогично второму подходу.
Ответ 4
http://javapapers.com/android/android-drag-and-drop/. Это лучший пример перетаскивания, поскольку я применил его в своем приложении. Примечание. Он будет поддерживать версии только выше 11. Функция перетаскивания не поддерживает версию 10. Вместо этого вам нужно переместить поля в абсолютном макете, установив X и Y позитроны. Но Абсолютная компоновка полностью устарела...
Ответ 5
Вы должны использовать WindowManaager для управления Drag And Drop, если ваше приложение не так сложно. Это легко реализовать и изменить положение. получите код Здесь