Навигация
Главная
Поиск
Форум
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
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
ТЕХНОЛОГИИ ДОСТ... 62989
Имитационное мо... 58321
Реклама
Сейчас на сайте
Гостей: 6
На сайте нет зарегистрированных пользователей

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

База данных - рабочее место кассира на Delphi + бд Access
Моделирование процесса обеспечивающего надежность функционирования АСУ Т...
Моделирование процесса обработки заданий на вычислительном центре на GP...

Реклама



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

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
BDEPack
RbControls
Х. М. Дейтел, П. ...
Zoom [Исходник на...
Таймер и секундомер
Шаблон для новост...
Черный круг двига...
Библия хакера 2. ...
Еext Editor
Андрей Боровский....
Добавление к ссы...
Учебник для продв...
GamesBase 3.0
Пример OpenGL гра...
Tenis [Исходник н...
Шейдеры в Delphi
SMExport
ShadelLabel
DemoEdit [Исходни...
StartMark

Топ загрузок
Приложение Клие... 100477
Delphi 7 Enterp... 87858
Converter AMR<-... 20082
GPSS World Stud... 13485
Borland C++Buil... 12053
Borland Delphi ... 8668
Turbo Pascal fo... 7048
Visual Studio 2... 5005
Калькулятор [Ис... 4906
FreeSMS v1.3.1 3545
Случайные статьи
Единственность и и...
Eastern women
он соответствовал ...
О серии ХР
Файлы в папке Wind...
Задача 3 посвящена...
сервера (всегда)]т...
Как открывать файл...
3.1. Структуры и ...
Оформление курсово...
Аргументы переменн...
Виртуальные машины...
Понятие источника ...
Я запустил все три...
Поиск текста в док...
15.4. Принципы Зад...
Задача о укладке в...
Область визуализац...
Подготовка к хакингу
Архитектурные реше...
Неупорядоченные сп...
Вычисление произол...
Кроме того, через ...
Сайты для самостоя...
Файлы посещений: м...
Статистика



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


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