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

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

Моделирование информационно-поисковой библиографической системы на gpss ...
Обучающая и тестирующая программа по здаче экзамена ПДД на Turbo Pascal ...
Медиа плейер на Delphi + Пояснительная записка

Содержимое объекта 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 18:31:23 · 0 Комментариев · 2341 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Технология .Net в VB
PDJXPPack
Мониторинг сервер...
Прграммирование в...
Delphi 2005 Учимс...
Программирование ...
Binary2XMLDemo (Р...
Пример работы с ф...
RxLIB
Графика в проекта...
Моделирование дви...
База игр
oTextrackBar
Панель "Случайное...
Песочные часы
Delphi 2005 для W...
Панель Наша Кнопка
SMExport
Архив значков
Пример работы с р...

Топ загрузок
Приложение Клие... 100772
Delphi 7 Enterp... 97809
Converter AMR<-... 20259
GPSS World Stud... 17014
Borland C++Buil... 14189
Borland Delphi ... 10267
Turbo Pascal fo... 7372
Калькулятор [Ис... 5972
Visual Studio 2... 5206
Microsoft SQL S... 3661
Случайные статьи
Особенности MediaP...
PHP и Web. Кэширов...
Влияние ЭВМ на сис...
Когда говорят про ...
Вы готовы выпустит...
Ваш выбор заметноп...
Заключение [Трасси...
Битовые поля в язы...
Что входит в Servi...
Процедура DrawPoly...
Оптимизация работы...
Модели управления ...
write(X)
Техническая библио...
Использование DTD-...
Файловые системы
Клоакинг
Игровые автоматы о...
В приложении 3 опи...
Перевод на машинны...
BEGIN expected
Решение головоломк...
Управление страницами
Как создать решени...
Eazylook
Статистика



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


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