Навигация
Главная
Поиск
Форум
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
Создание отчето... 65104
Модуль Forms 64885
Пример работы с... 63351
ТЕХНОЛОГИИ ДОСТ... 61582
Имитационное мо... 57447
Реклама
Сейчас на сайте
Гостей: 4
На сайте нет зарегистрированных пользователей

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

Двунаправленный динамический список на Delphi + Блок схемы
Моделирование круглосуточного интернет кафе на GPSS + Отчет
Моделирование интернет кафе на GPSS + Отчет

Реклама



Подписывайся на 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 Комментариев · 1569 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Encrypt Decrypt
Пример работы с ф...
Программирование ...
Halcyon
Профессиональное ...
Киллер окон
C++ Стандартная б...
PDF
Assembler. Практикум
ActiveX в Delphi
Программа предназ...
Игра "Астероиды" ...
Tag Игра "Пятнашк...
PHP 5. Практика с...
С# для профессион...
StartMark
Просмотр файлов и...
ИНТЕРНЕТ ПРОГРАММ...
Приемы программир...
База Allsubmitter...

Топ загрузок
Приложение Клие... 100466
Delphi 7 Enterp... 86648
Converter AMR<-... 20077
GPSS World Stud... 12670
Borland C++Buil... 11760
Borland Delphi ... 8558
Turbo Pascal fo... 7037
Visual Studio 2... 4998
Калькулятор [Ис... 4762
FreeSMS v1.3.1 3541
Случайные статьи
Инфографика и SEO
12.1. Задача
Глава 3. Работа с ...
Общее представление
Исключение рекурси...
Программа ,имитиру...
Блоки с информацие...
Ц - Алфавитный ука...
Аутентификация в с...
Контроль состава а...
Разделение списка ...
Диагональные элементы
Тестер
Шлюзы к мэйнфрейма...
Часто возникают ди...
Исследование модел...
Бесплатные 777 игр...
Министерство нацио...
Вывод текста в гра...
Вещественные типы
Средства обработки...
Выдача информации ...
Основы спутниковых...
Если у клиента либ...
Память для классов...
Статистика



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


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