Навигация
Главная
Поиск
Форум
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
Реклама
Сейчас на сайте
Гостей: 11
На сайте нет зарегистрированных пользователей

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

Моделирование регулировочного участка цеха на GPSS + Пояснительная записка
Медиа плейер на Delphi + Пояснительная записка
Моделирование работы класса персональных компьютеров на GPSS + Отчет + Б...

Анализ вывода мультитач-приложения
Немного позже второй палец прикасается к экрану. Значение действия теперь равно. Что означает это десятичное число? Значение действия состоит из двух частей: индикатора, задающего указатель, для которого предназначено действие, и собственно действия, выполняемого указателем. Преобразовав десятичное значение в шестнадцатеричное, получаем 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 18:39:45 · 0 Комментариев · 2360 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
CarGame [Исходник...
CS:Source - монит...
XPcontrol
Калькулятор [Исхо...
Базы данных в Инт...
EditButton
Панель "ссылки"
Blobs [Исходник н...
AdBlaster v2.5 - ...
Графика в проекта...
TrayIcon
Советы по Delphi
TsHintManager
База каталогов ( ...
StartMark
Шаблон для новост...
Библия для програ...
С# для профессион...
WAP версия сайта
C++ Стандартная б...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97832
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10290
Turbo Pascal fo... 7373
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
PREEMPT (ПРЕРВАТЬ)
Pointer variable e...
Функция TextWidth ...
Суммирование элем...
Лицензирование акт...
Синтаксис - Микро ...
Генератор имен (ге...
4.3. Принципы
Организация запрос...
Глава 3. Работа с ...
Сигнатуры
Линейное рехеширов...
Виртуальное наслед...
Инициализация данн...
Сортировка данных ...
Misplaced conditio...
Идентификаторы в я...
HTPC на базе Windows
Занятие 4. Проекти...
Правила наследования
Программа выбирает...
Отображение номера...
От издательства
Насколько она слож...
Об этой книге XXXII
Статистика



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


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