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

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

Диплом RSA, ЭЦП, сертификаты, шифрование на C#
Моделирование процесса передачи данных по магистрали с основным и резерв...
Информационная система - транспортный парк на Turbo Pascal (База данных)...

Реклама



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

ПОДПИСЫВАЙСЯ на канал о программировании
Содержимое объекта MotionEvent
Существуют также и другие отличия между эмулятором и реальным устройством. Обратите внимание, что позиция в эмуляторе представлена целыми числами ( и ), тогда как на реальном устройстве числа содержат дробные части (. и ). Позиция для MotionEvent имеет компоненты X и Y, где X представляет расстояние между левой границей объекта View и точкой касания, а Y — расстояние между верхней границей объекта View и точкой касания.
Вы также заметите, что сила нажатия и размер в эмуляторе равны. На реальном устройстве сила нажатия представляет то, насколько сильно палец прижат к экрану, а размер позволяет оценить площадь касания. Если только слегка коснуться кончиком мизинца, сила нажатия и размер будут небольшими. Если же сильно нажать большим пальцем, сила нажатия и размер окажутся значительными. В документации указано, что значения для силы нажатия и размера лежать в диапазоне от до. Однако, из-за отличий в оборудовании, во время принятия решений на основе силы нажатия и размера использование любых абсолютных значений может оказаться затруднительным. Вполне нормально сравнивать силу нажатия и размер для разных объектов MotionEvent в рамках приложения, но если вы решите, что сила нажатия должна превышать какое- то значение, например,., возникнут проблемы. Дело в том, что на отдельных устройствах вообще невозможно получить значения, превышающие., а то и.
Значения времени касания и времени события вычисляются одинаково как в эмуляторе, так и на реальном устройстве. Единственное отличие состоит в том, что на реальном устройстве получаются существенно более высокие значения. Значения времени работы практически одинаковы.
http://city-mobile.ru/aksessuary_dlya_sotovykh_telefonov/
Флаги границ предназначены для определения ситуации, когда касание произведено на границе физического экрана. В документации по Android SDK говорится, что эти флаги устанавливаются для указания, что касание пересекается с границей области отображения (верхней, нижней, левой или правой). Однако в зависимости от того, какое
устройство или эмулятор используется, метод getEdgeFlags может всегда возвращать. На некотором оборудовании в действительности очень трудно выявить касание на границе области отображения, поэтому Android прикрепляет позицию к краю и устанавливает соответствующий флаг границы. Это происходит не всегда, так что полагаться на корректную установку флагов границ не следует. Класс MotionEvent предоставляет метод setEdgeFlags, который позволяет самостоятельно устанавливать эти флаги.
Последний момент, который следует отметить — метод onTouch возвращает true, т.к. кнопка TrueButton закодирована на возврат true. Возврат значения true сообщает Android, что объект MotionEvent был потреблен, и не имеет смысла передавать его кому-либо еще. Это также заставляет Android продолжить отправку методу событий касания из данной последовательности касания. Именно поэтому на реальном устройстве мы получаем события ACTION_UP и ACTION_MOVE.
А теперь коснитесь кнопки с надписью returns false (возвращает false), которая находится ближе к верху экрана. Ниже будет пример вывода LogCat только для реального устройства. Различия уже объяснялись ранее, так что, работая в эмуляторе, вы поймете, почему получаете именно такой вывод, а не другой. . показан пример вывода LogCat после касания кнопки returns false.
Как, поведение существенно отличается, поэтому давайте посмотрим, что здесь происходит. Android получает событие ACTION_DOWN в объекте MotionEvent и передает его методу onTouch класса MainActivity. Метод onTouch записывает информацию в LogCat и возвращает false. Это сообщает Android, что метод onTouch не потребил событие, поэтому Android ищет следующий метод для вызова, которым в данном случае будет переопределенный метод onTouchEvent класса FalseButton. Так как FalseButton — это расширение класса BooleanButton, за кодом следует обращаться к методу onTouchEvent в BooleanButton.java. В методе onTouchEvent снова записывается информация в LogCat, вызывается метод onTouchEvent родительского класса и затем также возвращается false. Обратите внимание, что информация о позиции в LogCat в точности совпадает с той, что была ранее. Этого и следовало ожидать, поскольку мы находимся в том же самом объекте View — FalseButton. Мы видим, что в родительском классе метод onTouchEvent должен вернуть true, и понятно, почему. Если вы на эту кнопку в пользовательском интерфейсе, то у, что она отличается по цвету от кнопки returns true. Кнопка returns false теперь выглядит так, как будто бы находится на полпути к нажатому состоянию. Похоже, что кнопка была нажата, но не отпущена. Наш специальный метод возвращает false, а не true. Поскольку возвратом false мы снова сообщаем Android, что это событие не потребляется, Android никогда не отправит кнопке событие ACTION_UP, поэтому кнопка не узнает, что палец убран из сенсорного экрана. Таким образом, кнопка будет оставаться в нажатом состоянии. Если вернуть true, как того желает родительский объект, мы, в конце концов, получим событие ACTION_UP и сможем вернуть кнопке нормальный цвет. Вспомните, что каждый раз, когда мы возвращаем из объекта пользовательского интерфейса значение false для полученного объекта MotionEvent, Android прекращает отправку объектов MotionEvent этому объекту пользовательского интерфейса и продолжает искать другой интерфейсный объект, который бы потребил MotionEvent.
Вы могли заметить, что касание кнопки returns true не вызвало изменения ее цвета. Почему? Наш метод onTouch был вызван перед вызовом любого действительного метода кнопки, и onTouch вернул true, так что инфраструктура Android не вызывала метод onTouchEvent кнопки returns true. Если вы добавите строку v.onTouchEvent(event); в метод onTouch непосредственно перед возвратом true, то кнопка будет изменять цвет. Кроме того, в LogCat появятся дополнительные строки, потому что метод onTouchEvent также записывает информацию в LogCat.
Продолжим исследование вывода LogCat. Теперь поскольку инфраструктура Android дважды пыталась найти потребителя события ACTION_DOWN и потерпела неудачу, она переходит на следующий объект View в приложении, который потенциально может получать это событие — в данном случае это контейнер компоновки, содержащий кнопку.
Этот контейнер был назван trueLayoutTop, и мы можем посмотреть, получил ли он событие ACTION_DOWN.
Опубликовал katy February 17 2015 21:31:23 · 0 Комментариев · 1263 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
PHP: обучение на ...
С/C++ Программиро...
Программирование ...
GamesBase 3.0
Интерактивный инт...
Пример работы с ф...
Разработка клиент...
C++ Builder 6 СПР...
Базы данных в Инт...
Усложнённый кальк...
TMS
PCXReader. Програ...
Стелтинг Стивен, ...
Меню проводника в...
FormShape [Исходн...
Delphi. Готовые а...
Функции Visual Basic
DiZsubmit
PHP/MySQL для нач...
База каталогов ( ...

Топ загрузок
Приложение Клие... 100371
Delphi 7 Enterp... 82743
Converter AMR<-... 20046
Borland C++Buil... 11139
GPSS World Stud... 10693
Borland Delphi ... 8082
Turbo Pascal fo... 6968
Visual Studio 2... 4963
Калькулятор [Ис... 4312
FreeSMS v1.3.1 3510
Случайные статьи
Пример создания Q-...
Мосты, которые при...
Каково значение ад...
Объектно-ориентиро...
Стохастические про...
Анализ скорости вы...
3. Драйвер IPSec п...
Как найти резидент...
Операции. Операции...
Трехразрядный деся...
Распутывание вино...
Меню добавления из...
Пример: простое ши...
Поиск файлов и пап...
Зонтпакер
Параметры запроса ...
Использование Comp...
Шаблон документа
лет, что требуется...
Black SEO
Процедура GetModeR...
Введенную с клавиа...
Центр безопасности...
Что поражает больш...
Создание кадровой ...
Статистика



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


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