Подтвердить что ты не робот

Использование платформы Android Drag and Drop в моем обычном приложении Launcher

Я пытаюсь разработать пользовательское приложение запуска (с неограниченным количеством домашних страниц), и мне нужно реализовать Drag and Drop, как это сделано в Launcher2 (android 4.2).

Итак, я нашел два подхода

1) Перетаскивание рамки
2) Используйте путь android launcher2 как реализация DragController, DragSource, как описано здесь.

Но я изо всех сил пытаюсь понять, почему ребята из Android не использовали перетаскиваемую инфраструктуру Drag-Drop, разработанную ими в своем собственном приложении. Кто-нибудь может рассказать о возможном обосновании своего подхода? (Я имею в виду память/производительность)

Спасибо заранее.

4b9b3361

Ответ 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, если ваше приложение не так сложно. Это легко реализовать и изменить положение. получите код Здесь