Это зависит от уровня, на который вы нацеливаетесь.Если ваше приложение предназначено для работы на Android 3.0 или более поздней версии, вы можете использовать встроенный Drag and Drop API .
Если вашему приложению требуется нацеливание на более раннюю версию, Это хорошая библиотека с открытым исходным кодом ( Github page ), которую я использовал ранее и пытаюсь отразить функциональность встроенного API для приложений, ориентированных на 2.0 или более позднюю версию.
В любом случае вы начнете операцию перетаскивания с startDrag()
из обратного вызова onItemLongClick()
.
Редактировать: Извините за путаницу
Вы бы получиличтобы программно вносить изменения «вкладки» в ViewPager
на основе данных DragEvent
:
- Поскольку
ViewPager
является только частью библиотеки поддержки (и не был перенесен обратно), вы будетевозможно, придется прикрепить OnDragEventListener
к родительской ViewGroup. - Вы можете отслеживать местоположение перетаскивания, пока события
ACTION_DRAG_LOCATION
запускаются для слушателя.Определите разумный порог, которого должен достичь палец в пределах края прослушиваемого просмотра, и, когда он туда попадет, вызовите setCurrentItem()
на ViewPager
для переключения. - Пока ваша новая вкладка была создана виерархия представлений, когда вы начинали перетаскивание (это контролируется
setOffscreenPageLimit()
на ViewPager
), представления на новой странице также должны быть кандидатами для цели перетаскивания, поэтому они должны иметь возможность прослушивать событие ACTION_DROP
.
HTH