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