Навигация
Главная
Поиск
Форум
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
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Создание отчето... 63545
Модуль Forms 63378
ТЕХНОЛОГИИ ДОСТ... 60140
Пример работы с... 59223
Имитационное мо... 55595
Реклама
Сейчас на сайте
Гостей: 5
На сайте нет зарегистрированных пользователей

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

Моделирование работы обрабатывающего участка цеха в GPSS
Лабораторная работа по динамическим спискам на Turbo Pascal (удаление ду...
Обучающая и тестирующая программа по здаче экзамена ПДД на Turbo Pascal ...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Анализ вывода мультитач-приложения
Немного позже второй палец прикасается к экрану. Значение действия теперь равно. Что означает это десятичное число? Значение действия состоит из двух частей: индикатора, задающего указатель, для которого предназначено действие, и собственно действия, выполняемого указателем. Преобразовав десятичное значение в шестнадцатеричное, получаем x. Действие — это самый младший байт ( в этом случае), а индекс указателя — следующий по старшинству байт ( в этом примере). Обратите внимание, что это сообщает индекс указателя, но не его идентификатор. Если вы поместите на экран третий палец, значение действия станет выглядеть как x (десятичное ). Касание четвертым пальцем даст в результате значение x (десятичное ) и т.д. Вы пока еще не видели значение действия, равное, которое известно как ACTION_POINTER_DOWN. Оно подобно ACTION_DOWN, но только используется в ситуациях, связанных с мультитач.
А теперь посмотрим на следующую пару записей из LogCat . Первая запись представляет событие ACTION_MOVE (значение действия ). Вспомните, что на реальном экране трудно удерживать пальцы совершенно неподвижно. Здесь мы видим одно событие ACTION_MOVE, но их может быть и несколько. Когда первый палец убирается с экрана, мы получаем значение действия x (десятичное ). Как и ранее, индекс указателя равен, а значением действия является ACTION_POINTER_UP (аналогично ACTION_UP, но применяется в ситуациях с мультитач). Когда второй палец убирается в мультитач-ситуации, мы получаем значение действия x (десятичное ). Обратите внимание, что при получении ACTION_UP для одного из пальцев мы по-прежнему имеем информацию для обоих пальце.
Последняя пара записей . показывает еще одно событие ACTION_ MOVE для второго пальца, за которым следует событие ACTION_UP для того же второго пальца. В этот момент мы видим значение действия (ACTION_UP). Мы не получили значение действия, и ниже объяснено почему. Кроме того, обратите внимание, что как только первый палец был убран с экрана, индекс указателя для второго пальца изменился с на, но идентификатор указателя остался равен.
События ACTION_MOVE не сообщают, какой палец переместился. Для перемещения значением действия всегда будет независимо от того, сколько пальцев на экране осталось или какой палец перемещается. Все позиции пальцев, касающихся экрана, доступны внутри объекта MotionEvent, так что необходимо прочитать эти позиции и затем разобраться, что происходит. Если на экране остался только один палец, идентификатор указателя сообщит, что это за палец, и он же и перемещается по экрану. Согласно., когда на экране остается только второй палец, событие ACTION_MOVE имеет индекс указателя и идентификатор указателя, поэтому мы знаем, что перемещается второй палец.
Объект MotionEvent может содержать не только события перемещения для более чем одного пальца, но также и множество событий перемещения для каждого пальца. Это делается с использованием накопленных значений, содержащихся внутри объекта. Android должен сообщать обо всех накопленных значениях с момента существования последнего объекта MotionEvent. Для получения дополнительных сведений просмотрите документацию по getHistoricalSize и другим методам getHistorical...
Вернемся опять к началу. http://cormushka.ru/relevant_page/ Когда первый палец находится внизу, индекс указателя и идентификатор указателя равны, но почему мы не получаем для значения действия x (десятичное ), когда первый палец касается экрана перед любыми другими пальцами? К сожалению, это невозможно. Получить значение действия можно с помощью следующего сценария: коснитесь экрана сначала первым пальцем, а затем вторым, в результате чего значениями действий будут и (пока что проигнорируем события ACTION_MOVE). Теперь уберите первый палец с экрана (значение действия ) и опустите его снова на экран. Идентификатор указателя второго пальца остается равным. Пока первый палец приподнят от экрана, приложению известен только один идентификатор указателя —. После того как первый палец снова касается экрана, Android повторно назначит первому пальцу идентификатор указателя, равный, и индекс указателя, также равный. Поскольку теперь в касании участвуют несколько пальцев, мы получаем значение действия (индекс указателя и значение действия ).
Таким образом, причина кроется в обратной совместимости, но это не решает проблему. Значения действий и относятся ко времени, предшествующему появлению функции мультитач, и написанные ранее приложения будут по-прежнему работать в ситуациях, когда используется всего один палец.
Когда на экране остается только один палец, Android трактует это как случай одиночного, а не множественного касания. В результате мы получим старое значение ACTION_UP, равное, а не мультитач-значение ACTION_UP, равное. Эти случаи должны аккуратно обрабатываться в коде. Индекс указателя может дать в результате значение ACTION_DOWN, равное или, в зависимости от того, какие указатели участвуют. Убирание с экрана последнего пальца даст значение ACTION_UP, которое равно вне зависимости от его идентификатора указателя.
Существует еще одно действие, которое до сих пор не рассматривалось: ACTION_ SCROLL (со значением ), появившееся в Android. Это действие поступает от устройств ввода, подобных мыши, а не сенсорному экрану. В действительности, как можно заметить, просматривая методы класса MotionEvent, эти объекты могут использоваться для многих целей, отличных от касаний на сенсорном экране. Однако другие устройства ввода в настоящей книге не рассматриваются.
Опубликовал katy February 17 2015 21:39:45 · 0 Комментариев · 1496 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Работа с картотеками
Приемы программир...
Text3D
XPmenu
XPButtons
Размещение элемен...
PolyFlow
Библия для програ...
Защита от спама ...
ActiveX в Delphi
Delphi Быстрый Ст...
PHP глазами хакера
PHP: Полезные приемы
C++ : библиотека ...
DelTrayIcon [Исхо...
SendSMS для PHP-F...
Scrrlcaptoin
Мод "проверочный ...
ProLIB18
Время загрузки ...

Топ загрузок
Приложение Клие... 100443
Delphi 7 Enterp... 85601
Converter AMR<-... 20065
GPSS World Stud... 12456
Borland C++Buil... 11524
Borland Delphi ... 8478
Turbo Pascal fo... 7020
Visual Studio 2... 4987
Калькулятор [Ис... 4722
FreeSMS v1.3.1 3533
Случайные статьи
двусвязный список
Создайте группу бе...
Последний вариант ...
Мой компьютер
ИЗУЧЕНИЕ ПРОГРАММН...
Обучение английско...
Набор плагинов, ре...
Включение датчика NFC
Реализация специал...
Сайты для бесплатн...
Цель поисковой опт...
Логическая бомба н...
Выбор VPN для начи...
Создание форм нест...
Память для классов...
Целые числа: удиви...
Модуль XHTML Modul...
отчетность через и...
Хотя компьютеры, в...
ПРЕДИСЛОВИЕ КО ВТО...
клиенты POP3/SMTP
VW Polo
Размеры динамическ...
Операции над списк...
подкаталог Ех73
Статистика



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


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