Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 7
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Выбор наилучших альтернатив с использованием методов оптимизации на Delp...
Создание последовательности окон и передвижение окон по экрану на Turbo ...
Обратное размещение элементов ЭВС на Delphi + Пояснительная записка

Реагирование на события onDrag в зоне сбрасывания
А сейчас мы приступим к анализу самого интересного кода. Для зоны сбрасывания необходимо создать цель, на которую должны перетаскиваться точки. Как упоминалось ранее, компоновка определяет на экране зеленый квадрат и рядом с ним текстовое сообщение. Поскольку зона сбрасывания также является фрагментом, переопределяется метод onCreateView класса DropZone. Первым делом понадобится наполнить компоновку зоны сбрасывания и затем извлечь ссылку на представление для квадратной цели (dropTarget) и для текстового сообщения (dropMessage). После этого необходимо настроить слушатель перетаскивания для цели, чтобы знать, когда перетаскивание начинается.
Слушатель перетаскивания для цели сбрасывания имеет единственный метод обратного вызова: onDrag. Этот обратный вызов будет принимать ссылку на представление, а также объект DragEvent. Ссылка на представление относится к представлению, с которым связан объект DragEvent. Как упоминалось ранее, слушатель перетаскивания не обязательно подключается к представлению, которое будет взаимодействовать с событием перетаскивания, так что этот обратный вызов должен идентифицировать представление, для которого возникло событие перетаскивания.
Одним из первых шагов, который, вероятно, будет предприниматься в любом обратном вызове onDrag, является чтение действия из объекта DragEvent. Это позволит выяснить, что происходит. По большей части, единственное, что необходимо сделать в данном обратном вызове — это фиксация факта, связанного с возникновением события перетаскивания. Например, для события ACTION_DRAG_LOCATION в действительности ничего делать не понадобится. Однако нужно будет предусмотреть выполнение специальной логики для случая, когда объект перетаскивается внутрь заданных границ (ACTION_DRAG_ENTERED); эта логика должна отключаться, если объект либо находится вне этих границ (ACTION_DRAG_EXITED), либо же он сбрасывается (ACTION_DROP).
Здесь используется класс ObjectAnimator, введенный в, но только в коде для указания циклического интерполятора, который изменяет значение альфа-канала цели. Это обеспечит эффект пульсирования прозрачности зеленой квадратной цели, что послужит визуальной индикацией готовности цели к приему перетаскиваемого объекта. Поскольку включается анимация, необходимо позаботиться о ее отключении, когда объект отпускается или сбрасывается, т.е. когда перетаскивание завершено. Теоретически анимация должна быть остановлена при обработке события ACTION_DRAG_ENDED, но разумно останавливать ее во всех случаях.
Для этого конкретного слушателя перетаскивания необходимо получать только события ACTION_DRAG_ENTERED и ACTION_DRAG_EXITED, если перетаскиваемый объект взаимодействует с представлением, с которым он ассоциирован. И, как будет, события ACTION_DRAG_LOCATION происходят, только когда перетаскиваемый объект находится внутри целевого представления.
Единственным другим интересным условием является само действие ACTION_DROP (обратите внимание, что имя этого действия не содержит часть DRAG_). Когда объект сбрасывается на представление, это означает, что пользователь отпустил точку над зеленым квадратом. Поскольку сбрасывание этого объекта на зеленый квадрат ожидалось, можно просто прочитать данные из первого элемента и зафиксировать сообщение в LogCat. В производственном приложении объект ClipData, содержащий само событие перетаскивания, может потребовать более пристального внимания. Просмотрев его свойства, можно принять решение о том, принимать сбрасывание или нет.
Самое время обратить внимание на булевский результат метода обратного вызова onDrag. В зависимости от обстоятельств, необходимо сообщить Android о том, позаботились ли вы о событии перетаскивания (вернув true) или же нет (вернув false). Если вы не обнаруживаете внутри объекта события перетаскивания нужных данных, можете вернуть из этого метода обратного вызова значение false, которое сообщит Android, что это сбрасывание не было обработано. http://bs-rent.ru/
После фиксации в LogCat сведений из события перетаскивания производится увеличение на единицу счетчика полученных сбрасываний; это приводит к обновлению пользовательского интерфейса в части, касающейся DropZone.
Если вы еще раз на код этого класса, вы найдете его довольно простым. В нем нет ни кода, который бы работал с объектами MotionEvent, ни даже кода, который бы определял, происходит ли перетаскивание. Вы лишь получаете соответствующие обратные вызовы по мере того, как протекает последовательность перетаскивания.
Опубликовал katy February 17 2015 19:11:36 · 0 Комментариев · 2428 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Разработка Web-пр...
База каталогов ( ...
Файловый менеджер
JanComp
Керниган Б.В., Ри...
Animated Menus
iComm v.6.1 - выв...
С. Г. Горнаков - ...
SynEdit
Assistant
XPmenu
Х. М. Дейтел, П. ...
Tag Игра "Пятнашк...
Базы данных в Инт...
Редактор текста (...
RAS
Распознавание иде...
VksButton
Assembler. Учебни...
Info

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97838
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14192
Borland Delphi ... 10292
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
• На какой уровень...
Копирование печатн...
Какие из следующих...
Язык С: пример пра...
сертификация соотв...
Определение параме...
Листинг 5.5. Автом...
по любому протоколу
Несколько примеров...
БЛОКИ ДЛЯ СБОРА СТ...
2.1. Синтаксическ...
Вывод в текущее по...
Интеграция и персп...
Реальный размер жу...
Обобщение алгоритм...
Какие возможности ...
Прекращение выполн...
Содержание
Имя в языке C++ : ...
Узлы XPath
• Если RAS-сервер ...
Жесты-подсказки в ...
14.1. Структура да...
Virtual constructo...
Высота и ширина яч...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?