Перетащите фигуру в Xamarin. Android
Поддержка перетаскивания расширяет возможности пользовательского интерфейса, позволяя перемещать все типы входных данных, поддерживаемых Surface Duo.
В этом примере показано, как реализовать перетаскивание в приложении Android.
Значение ключа
Перетаскивание позволяет пользователю без усилий перемещать данные в пределах одного приложения или между разными приложениями на двух экранах.
Типы приложений с поддержкой этого режима:
- Приложения, содержащие текст или изображения.
См. сведения о возможности перетаскивания в руководстве по использованию двухэкранных устройств.
Ознакомьтесь с нашим примером
Получение примера перетаскивания на GitHub
Общие сведения об исходном коде
В этих фрагментах кода показано, как реализовать возможность перетаскивания.
Свяжите dragListener с целевым представлением.
View.Drag += View_Drag;
Реализуйте ACTION_DROP в onDrag().
void View_Drag(object sender, View.DragEventArgs e) { if (e.Event.Action == DragAction.Drop) { e.Handled = true; // ... } }
Получите URI из DragEvent.
e.Event.ClipData.GetItemAt(0).Uri;
Запросите разрешения для этого URI.
RequestDragAndDropPermissions(e.Event);
Создайте запрос к ContentProvider, чтобы получить перетаскиваемый элемент.
var metadata = ContentResolver.Query(uri, new [] { OpenableColumns.DisplayName, OpenableColumns.Size}, null, null, null)) var file = ContentResolver.OpenFileDescriptor(uri, mode: "r");