Как получить режим рабочего стола перетаскивания в корзину, в моем собственном приложении?

На главном экране Android можно удалить элементы, перетащив их в корзину.

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

Есть ли простой способ реализовать эту функциональность? Или кто-нибудь может дать мне указания, которые могут помочь мне, возможно, для этого?

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

Как говорит Austyn Mahoney, в своем комментарии вы можете ссылаться на код домашнего экрана с открытым исходным кодом Android. Но поскольку перетаскивание – это простая в использовании функция, вы можете справиться с ней самостоятельно.

Вам нужно, чтобы ваши объекты хранились, например, в массиве . Затем просмотрите типы событий.

На каждом ACTION_DOWN вам нужно проверить, был ли пользователь поражен. Например, если у нас есть круги в качестве элементов, нам необходимо зафиксировать текущие координаты ACTION_DOWN, чтобы мы могли проверить их, чтобы они находились внутри элемента, и получить идентификатор элемента, который пользователь собирается перетащить, в соответствии с координатами ACTION_DOWN.

В ACTION_MOVE вам просто нужно передать текущие координаты x и y в элемент, чтобы перерисовать его в новой позиции.

Ну, это просто функция перетаскивания. Теперь вам нужно проверить, чтобы элемент находился в определенном секторе, который вы вызываете bin. Таким образом, вы определяете прямоугольник на экране. В ACTION_MOVE ваш тест, чтобы предмет находился в этой области, вот и все.

Просто пример кода для перетаскивания:

public boolean onTouchEvent(MotionEvent event){ int itemID = 0; int X = (int)event.getX(); int Y = (int)event.getY(); switch(event.getAction()){ case MotionEvent.ACTION_DOWN: for(Items item : dragable_item){ //center coords of the item int centerX = item.getX() + 25; int centerY = item.getY() + 25; //calculate the distance (radius) from touch to item //get item to drag if(distance < 20){ itemId = item.getID(); break; } } break; case MotionEvent.ACTION_MOVE: if(itemID > 0){ Items[itemID-1].setX(X-25); Items[itemID-1].setY(X-25); } break; } } invalidate(); return true; } 

Если вы хотите больше копать в коде, посмотрите на anddev.org – перетащите.

Intereting Posts
OutOfMemoryError при загрузке изображений в RecyclerView Программирование Bluetooth на Android Как вы передаете изображения (растровые изображения) между действиями андроида с помощью пакетов? Уничтожить DialogFragment на onCreateDialog () Место вашего проекта содержит пробелы. (Android Studio) Webview не отображает шрифт Гуджарати NetWork В главной теме Исключение Как инициализировать MediaFormat для настройки MediaCodec для декодирования необработанных данных AAC? Как очистить все данные кеша приложений в Android Marshmallow У разных телефонов Android разные ограничения на количество подключаемых устройств Bluetooth SPP, к которым они могут подключиться? Выполнение не выполнено для задачи ': app: transformClassesWithInstantRunVerifierForDebug'. > Java.lang.NullPointerException (нет сообщения об ошибке) Android: хорошая практика для организации каталогов и файлов на SD-карте хранения? Можете ли вы увеличить силу вибрации на устройствах Android? Как я могу изменить действия панели действий динамически? Android получает ограничивающий прямоугольник вида