Наша совместная команда Banwar.org

Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

Програмування для мобільних пристроїв - в маси: Одним махом! Програмування жестів в Android

  1. Серія контенту:
  2. Цей контент є частиною серії: Програмування для мобільних пристроїв - в маси
  3. Про це циклі статей
  4. (Hello) Overheard Word
  5. Цільова аудиторія
  6. Малюнок 1. Розподіл версій Android
  7. Починаємо новий проект
  8. Малюнок 2. Локальна установка Android SDK з єдиною встановленою версією
  9. Малюнок 3. Установка Android 2.3.3 (API 10)
  10. Малюнок 4. Створення AVD
  11. Малюнок 5. Створення нового проекту Android в Eclipse
  12. Малюнок 6. Створення дії за замовчуванням
  13. Створення UI Android
  14. визначення макета
  15. Лістинг 1. Визначення макета LinearLayout в Android
  16. Лістинг 2. Файл ресурсів, що визначає колір кнопок і написи на них
  17. Малюнок 7. Робота Overheard Word в Eclipse
  18. Лістинг 3. Замінюючий текст для android: text
  19. Малюнок 8. Робота Overheard Word в AVD
  20. Програмування жестів в Android
  21. Анонімні класи
  22. SwipeDetector
  23. Мислення мобільними категоріями
  24. Лістинг 4. SwipeDetector
  25. Виявлення смахивания в інтерфейсі
  26. Лістинг 5. GestureDetector
  27. Лістинг 6. Реєстрація виявлення жесту змахування в поданні View
  28. Метод пошуку уявлення по ID
  29. Лістинг 7. Ідентифікатори віджетів в класі R
  30. Змахування пальцем працює!
  31. Розгортання в процесі розробки
  32. Малюнок 9. Вибір пристрою для запуску програми
  33. параметри безпеки
  34. Висновок
  35. Ресурси для скачування

Програмування для мобільних пристроїв - в маси

Як замінити кнопки на жести смахивания в своєму мобільному Android-додатку

Серія контенту:

Цей контент є частиною # з серії # статей: Програмування для мобільних пристроїв - в маси

http://www.ibm.com/search/csass/search/?sn=dw&lang=ru&cc=RU&en=utf&hpp=20&dws=rudw&lo=ru&q=%D0%9F%D1%80%D0%BE%D0%B3% D1% 80% D0% B0% D0% BC% D0% BC% D0% B8% D1% 80% D0% BE% D0% B2% D0% B0% D0% BD% D0% B8% D0% B5 +% D0% B4% D0% BB% D1% 8F +% D0% BC% D0% BE% D0% B1% D0% B8% D0% BB% D1% 8C% D0% BD% D1% 8B% D1% 85 +% D1% 83 % D1% 81% D1% 82% D1% 80% D0% BE% D0% B9% D1% 81% D1% 82% D0% B2 +% E2% 80% 95 +% D0% B2 +% D0% BC% D0% B0% D1% 81% D1% 81% D1% 8B & Search =% D0% 9F% D0% BE% D0% B8% D1% 81% D0% BA

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Програмування для мобільних пристроїв - в маси

Слідкуйте за виходом нових статей цієї серії.

При створенні мобільних додатків, як і при написанні Web-додатків, програміст повинен орієнтуватися на кінцевий результат (і користувача). Постійно тримайте в голові призначення свого застосування і спосіб роботи з ним. Інформацію якого типу відображає додаток, які його функції і як користувачі будуть звертатися до того й іншого? Щоб забезпечити успіх, необхідно приділити достатньо уваги роботі користувачів з цим мобільним додатком.

Про це циклі статей

Мобільні додатки ростуть як гриби після дощу, і фахівцям з розробки є де застосувати свої знання. Пропонований цикл статей знайомить з мобільними технологіями тих програмістів, які тільки починають освоювати цю сферу. Ми почнемо з написання "рідних" додатків на мові Java, а потім додамо в інструментарій JVM-мови, платформи сценаріїв, інструменти HTML5 / CSS / JavaScript і багато іншого. Читач, крок за кроком, буде опановувати навичками, необхідними для виконання практично будь-якого сценарію розробки мобільних додатків.

На відміну від розробки традиційного GUI для настільних і Web-додатків, в разі мобільних додатків діє правило: чим менше, тим краще. Конструюючи інтерфейс мобільного додатка, мислите категоріями простоти і легкості. Більшість мобільних пристроїв має невеликі розміри (якщо тільки це не Samsung Note 4 - найбільший мобільний телефон - він же планшет, - який я коли-небудь бачив). Малий розмір - одна з причин повсюдного поширення цих пристроїв, які всюди носять з собою і можуть використовувати в будь-якому місці. З цим пов'язано ще одне важливе спостереження: в більшості випадків увага мобільного користувача не прикута до додатка, з яким він працює!

Деякі мобільні додатки проектуються спеціально для планшетів і призначені для ділового використання (наприклад, лікарями для звернення до історій хвороби). У більшості ж своєму мобільні додатки призначені для крихітних пристроїв, користувачі яких одночасно роблять щось ще. Стоячи в черзі за продуктами, я можу кілька разів зіграти в Angry Birds. Час висадки з літака після тривалого польоту можна використовувати для того, щоб перевірити електронну пошту. Однак якщо для завантаження злих птахів або повідомлень електронної пошти недостатньо пари жестів пальцями, то я, швидше за все, не стану з цим возитися.

Ще одне, що помітно відрізняє мобільні додатки від традиційних Web- і настільних додатків, - це їх кількість: на кожне Web-додаток легко набереться 100 мобільних. Ваша програма повинна пропонувати якийсь дійсно вартий сервіс. Воно повинно бути простим і привабливим. Якщо ви очікуєте, що користувач стане читати керівництво, то створите проблему для нього, яка в кінцевому підсумку стане проблемою для вас. І не важливо, на кого створена ця програма - на лікаря, якому потрібно отримати доступ до історії хвороби, або на того, хто грає в "Розріж мотузку" в залі очікування. Якщо налаштування мобільного додатка займає більше пари хвилин, то користувачі, швидше за все, відправляться в app store за іншим.

(Hello) Overheard Word

Ті, хто прочитав першу статтю цього циклу, знають, як налаштувати середовище розробки Android у Eclipse, і вже налаштували свій Android SDK для платформи Android версії 4.2. Вони розробили свою першу, просте Android-додаток - різновид класичного Hello World. У цьому місяці ми продовжимо цей шлях і розробимо більш оригінальне додаток.

Мій приклад програми, Overheard Word (Підслухане слово), призначений для того, щоб весело і легко розучувати нові слова і практикувати їх використання в контексті - до речі, це два моїх улюблених заняття. Користувач додатки дізнається кілька нових слів і відповідає на питання вікторини. Інтерфейс складається з екрану дисплея і двох кнопок. На дисплей виводяться слова і відповідні визначення, а кнопки служать для навігації.

"Підслухане слово" - це веселе і просте мобільний додаток для тих, хто любить грати в слова (я маю на увазі шанувальників лексики і цінителів слова). Ще важливіше те, що це приклад створення легітимного Android-додатку, який можна розгорнути на реальному Android-пристрої.

Цільова аудиторія

Перш ніж розробляти додаток, хотілося б оцінити його цільовий ринок. Додаток, створений нами в першій статті, націлене на Android 4.2, або API версії 17. Погляньте на останню таблицю поширення версій Android, надану Google (див. Малюнок 1).

Малюнок 1. Розподіл версій Android
Програмування для мобільних пристроїв - в маси   Як замінити кнопки на жести смахивания в своєму мобільному Android-додатку   Серія контенту:   Цей контент є частиною # з серії # статей: Програмування для мобільних пристроїв - в маси   http://www
Планшети проти телефонів

Найбільш ймовірна причина зростання числа користувачів Android версії 15 (див. Малюнок 1 ) - успішні продажі планшетів. В даний час більшість планшетів, незалежно від виробника, працює з Android 4.x. Якщо тільки ви не створює додаток для Android-планшета, то орієнтуйте його на API Android версій 9 і 10, на частку яких в даний час припадає найбільша частина ринку мобільних пристроїв.

Малюнок 1 показує, що сьогодні приблизно половина всіх Android-пристроїв працює на Android 2.3.x (API версій 9 і 10)! То чи не краще розробити додаток саме для цього ринку?

Починаємо новий проект

Минулого місяця ми встановили API версії 4.2. Тепер давайте встановимо Android 2.3.3 (API 10). Запустивши Android SDK Manager, як показано на малюнку 2, бачимо кілька готових до установки оновлень.

Малюнок 2. Локальна установка Android SDK з єдиною встановленою версією

Якщо ви вирішили слідувати за мною, виберіть варіант Android 2.3.3 (API 10) і збережіть всі рекомендовані оновлення, зазначені менеджером.

Малюнок 3. Установка Android 2.3.3 (API 10)

Завантаживши новий API для Android, необхідно створити сумісний емулятор, або віртуальний пристрій Android (AVD). В Android SDK Manager виберіть меню Tools з параметром Manage AVDs. Переконайтеся в тому, що ви створюєте AVD, орієнтоване на API рівня 10.

Малюнок 4. Створення AVD

Далі, створіть проект New Android Application і надайте йому ім'я. Мій проект називається Overheard Word. Зорієнтуйте додаток на API 10, щоб зробити його доступним для максимальної кількості пристроїв. Розгляньте малюнок 5 і зверніть увагу на те, що я також вибрав компіляцію з API 10. Компілювати можна і з новою версією Android, але я віддаю перевагу програмувати і компілювати з одним і тим же API. (Якщо компілювати з більш пізнім API, то потрібно стежити за тим, щоб не використовувалися ніякі його можливості, які можуть створити проблеми сумісності.)

Малюнок 5. Створення нового проекту Android в Eclipse

Натиснувши кнопку Next, не робіть свій додаток бібліотекою проекту. збережіть ті ж значення за замовчуванням, що і для додатка Hello World . Ви завжди зможете внести невеликі зміни (наприклад, замінити файл ярлика програми).

Останній крок установки - присвоєння імені свого першого дії. Я назвав його OverheardWord, а не Main, і те ж ім'я використовував для макета. Якщо ви теж використовуєте API 10 в якості своєї цільової версії, то в заключному діалоговому вікні у вас буде кілька варіантів вибору способу навігації (Navigation Type). Ще не турбуйтеся про це; я покажу, як створити меню навігації, в одній з наступних статей. Для цього ж додатка залиште для параметра Navigation Type значення none.

Малюнок 6. Створення дії за замовчуванням

Натисніть кнопку Finish, щоб створити проект, який виглядає так само, як проект за замовчуванням HelloWorld, з яким ми працювали в Минулого разу .

Створення UI Android

Тепер можна створити простий користувальницький інтерфейс. Як ви, напевно, пам'ятаєте, UI Android в кінцевому підсумку визначається як XML-документ, який вам, ймовірно, здасться знайомим. Android використовує ті ж макети, які застосовують при створенні традиційного GUI Java ™. В макетах Android можна визначити спосіб відображення пристроєм візуальних компонентів програми. Стиль макета може бути:

  • лінійним, коли компоненти організовані по горизонталі або по вертикалі (як колонки в газеті);
  • відносним, коли компоненти розташовуються один щодо одного (віджет 2 праворуч від віджета 1 і т.д.);
  • табличним, коли компоненти відображаються в стовпцях і рядках.

Бувають і інші стилі макета, але для початку досить цих трьох.

У макеті можна визначити віджети - звичайні компоненти, які можна знайти в будь-якому GUI. Платформа Android пропонує основні віджети, такі як кнопки, текстові поля і списки, що розкриваються, а також більш складні - для перегляду картинок, обертання і т.п.

Як я вже говорив, для призначеного для користувача інтерфейсу Overheard Word потрібні:

  • три текстових поля (для зберігання слова, назви відповідної йому частини мови і його визначення);
  • дві кнопки (для вибору нового слова і відповіді на питання).

визначення макета

Першим кроком до створення призначеного для користувача інтерфейсу Android є визначення макета з віджетами. У лістингу 1 ми спочатку визначаємо макет типу LinearLayout з трьома віджетами TextViews. Потім створюємо подмакет (також типу LinearLayout) з двома кнопками Button.

Лістинг 1. Визначення макета LinearLayout в Android

<LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" android: id = "@ + id / LinearLayout1 "android: layout_width =" match_parent "android: layout_height =" match_parent "android: orientation =" vertical "android: paddingBottom =" @ dimen / activity_vertical_margin "android: paddingLeft =" @ dimen / activity_horizontal_margin "android: paddingRight =" @ dimen / activity_horizontal_margin "android: paddingTop =" @ dimen / activity_vertical_margin "tools: context =". OverheardWord "> <TextView android: id =" @ + id / word_study_word "android: layout_width =" wrap_content "android: layout_height =" wrap_content "android: layout_gravity = "center" android: layout_marginBottom = "10dp" android: layout_marginTop = "60dp" android: textColor = "@ color / black" android: textSize = "30sp" /> <TextView android: id = "@ + id / word_study_part_of_speech "android: layout_width =" wrap_content "android: layout_height =" wrap_content "android: layout_gravity =" center "android: layout_marginBottom =" 10dp "android: layout_marg inLeft = "20dp" android: layout_marginRight = "20dp" android: textColor = "@ color / black" android: textSize = "18sp" /> <TextView android: id = "@ + id / word_study_definition" android: layout_width = "wrap_content "android: layout_height =" wrap_content "android: layout_gravity =" center "android: layout_marginLeft =" 40dp "android: layout_marginRight =" 40dp "android: textColor =" @ color / black "android: textSize =" 18sp "/> <LinearLayout android: id = "@ + id / widget62" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_gravity = "center" android: layout_marginLeft = "5dp" android: layout_marginRight = "5dp"> <Button android : id = "@ + id / next_word" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_marginTop = "20dp" android: text = "@ string / next_word" /> <Button android: id = " @ + id / take_quiz "android: layout_width =" wrap_content "android: layout_height =" wrap_content "android: layout_marginLeft =" 50dp "android: layout_marginTop =" 20dp "android: text =" @ string / take_quiz "/> </ LinearLa yout> </ LinearLayout>

Як видно з XML в лістингу 1, кожен віджет має ряд властивостей, які впливають на його зовнішній вигляд. Наприклад, у кожній з двох кнопок є елемент text, рядок якого вказує на елемент ресурсів. Цей елемент визначається у файлі ресурсів з ім'ям strings.xml, який зберігається в папці res / values. лістинг 2 ілюструє файл strings.xml.

Лістинг 2. Файл ресурсів, що визначає колір кнопок і написи на них

<? Xml version = "1.0" encoding = "utf-8"?> <Resources> <string name = "app_name"> Overheard Word </ string> <color name = "white"> # ffffff </ color> <color name = "black"> # 000000 </ color> <string name = "next_word"> Next word </ string> <string name = "take_quiz"> Take quiz </ string> </ resources>

Щоб побачити, як виглядає UI на даний момент, можна запустити екземпляр емулятора. Але ми замість цього виберемо вкладку Graphical Layout в Eclipse, як показано на малюнку 7.

Малюнок 7. Робота Overheard Word в Eclipse

замісник текст

При перегляді призначеного для користувача інтерфейсу трохи бентежить порожній простір замість атрибутів слова. Це не проблема: перш ніж приступити до програмування, додамо зразок тексту для більш реалістичного уявлення.

Спочатку додамо до кожного з віджетів TextView атрибут android: text, так само, як я це зробив для написів на кнопках. Поки додамо заміну тексту.

Лістинг 3. Замінюючий текст для android: text

<TextView android: id = "@ + id / word_study_part_of_speech" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_gravity = "center" android: layout_marginBottom = "10dp" android: layout_marginLeft = "20dp" android: layout_marginRight = "20dp" android: textColor = "@ color / black" android: textSize = "18sp" android: text = "Part of Speech" />

Як видно з лістингу 3, я додав в віджет TextViewword_study_part_of_speech зразок тексту ( "Part of Speech"). І оновив деякі з елементів стильового оформлення, збільшивши розмір тексту, визначивши його колір і відцентрувати віджет в макеті. Атрибути в лістингу 3 - загальні для визначення віджетів в Android-додатку; створюючи інші додатки, ви дізнається і полюбите їх. Я визначив зразок тексту безпосередньо в своєму файлі макета, а не в файлі ресурсів, тому що це тимчасові текстові значення, які використовуються тільки в процесі проектування.

При запуску програми в Eclipse буде видно, що побачать користувачі.

Малюнок 8. Робота Overheard Word в AVD

У дизайні для користувача інтерфейсу все ще щось не так. Здогадуєтеся, що саме? Так-так, ці незграбні кнопки! Чи необхідні вони? Чи часто користувач натискає кнопки в мобільних додатках? Чи не зручніше чи змахнути пальцем вліво або вправо, щоб побачити нові слова, і вниз, щоб відповісти на питання?

Видаливши кнопки, ми очистимо свій UI і краще пристосуємо додаток Overheard Word до очікуванням більшості користувачів мобільних пристроїв. Як ви скоро побачите, жести смахивания реалізуються досить легко.

Програмування жестів в Android

Ми визначили початковий вікні керування Overheard Word і тепер готові додати деякий поведінку. Досвід розробки традиційних Java GUI і тут застосуємо безпосередньо до Android - спочатку реалізуємо прослуховуючі процеси, які реагують на події. Якби ми залишили дві кнопки, то могли б використовувати метод OnClickListener для присвоєння дії кожного натискання кнопки, а потім додати його до методу setOnClickListener віджета кожної кнопки.

Анонімні класи

Анонімні класи - це класи, локальні по відношенню до даного класу, але без імені: можна визначати анонімні класи і створювати їх примірники у одному вираженні. Я вважаю їх зручними і елегантними і часто використовую, особливо при програмуванні поведінки інтерфейсу користувача.

Хоча, безумовно, можна використовувати OnClickListener, я, скоріше, схиляюся до декількох файлів класів для різних віджетів. Мені не подобається весь цей безлад, і я вважаю за краще альтернативну стратегії реалізації анонімних класів.

У традиційному програмуванні GUI поняття жестів, таких як змахування, відсутня, проте їх реалізація аналогічна програмування натискання кнопки. Почнемо з процесу прослуховування торкання, який входить до складу базової платформи Android, а потім додамо відповідну поведінку. Для виявлення руху смахивания пальцем потрібно обчислити різницю між координатами початку і кінця жесту, а також його швидкість. (Я знаходжу тут корисними декартові координати: змахування вліво і вправо відбувається по осі X, а вгору і вниз - по осі Y.)

Жест може відбуватися в будь-якому місці інтерфейсу. При підключенні такого процесу прослуховування до будь-якого компонента інтерфейсу додатку починайте з макета (який в Android представлений як View) і додайте найпростіший віджет кнопки. Я використовую метод Android SimpleOnGestureListener для створення початкової реалізації жесту, а потім підключаю його до View за допомогою методу onTouchListener. Підключившись до примірника свого уявлення, я можу виявляти жести смахивания з усього інтерфейсу, а не тільки в межах його компонента, такого як компонент для перегляду зображень.

Однак попередньо потрібно написати клас, здатний виявляти рух пальців на мобільному пристрої.

SwipeDetector

Виявити натискання кнопки відносно легко. Операційна система зазвичай абстрагує координати меж кнопки, щоб програмісту не потрібно було займатися їх визначенням вручну. Програмування розпізнавання руху смахивания і реагування на нього в додатку трохи складніше. Android багато перекладає на програміста, зате залишає вам величезну свободу. Ви можете виявляти один жест, як ми робимо тут. Але можете виявляти і інші рухи пальців, такі як потирання, яке іноді використовують в іграх.

Мислення мобільними категоріями

Як не дивно, процес прослуховування мобільного застосування визначається дієсловом click (клацати). Користувачі мобільних пристроїв натискають кнопки, а не щалкают на них, як у випадку настільної миші. Розробка для мобільних пристроїв передбачає мислення мобільними категоріями, що означає переосмислення традиційних Web- і настільних механізмів, таких як натискання кнопок, меню Пуск і навіть майстри GUI.

Для програмування Виявлення жесту змахування доводитися вдаватся до геометрії. Якщо початкова координата торкання по осі X мінус кінцева координата по тій же осі перевищує задану відстань, і якщо швидкість цього руху перевищує інше задане значення, то є всі підстави припустити, що користувач зробив жест змахування пальцем справа наліво. Змахування вгору і вниз розраховуються аналогічним чином, але по осі Y.

Подібну логіку легко абстрагувати в простий клас, який виконує елементарні розрахунки. SimpleOnGestureListener містить метод onFling. Метод onFling приймає два значення типу MotionEvent (початок і кінець), представляючи значень швидкості по осі X, і два значення типу float - для представлення значень швидкості по осі Y. Таким чином, клас SwipeDetector в лістингу 4 містить чотири методи, які розмежовують весь діапазон рухів смахивания: вліво, вправо, вгору і вниз.

Лістинг 4. SwipeDetector

import android.view.MotionEvent; public class SwipeDetector {private int swipe_distance; private int swipe_velocity; private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_THRESHOLD_VELOCITY = 200; public SwipeDetector (int distance, int velocity) {super (); this.swipe_distance = distance; this.swipe_velocity = velocity; } Public SwipeDetector () {super (); this.swipe_distance = SWIPE_MIN_DISTANCE; this.swipe_velocity = SWIPE_THRESHOLD_VELOCITY; } Public boolean isSwipeDown (MotionEvent e1, MotionEvent e2, float velocityY) {return isSwipe (e2.getY (), e1.getY (), velocityY); } Public boolean isSwipeUp (MotionEvent e1, MotionEvent e2, float velocityY) {return isSwipe (e1.getY (), e2.getY (), velocityY); } Public boolean isSwipeLeft (MotionEvent e1, MotionEvent e2, float velocityX) {return isSwipe (e1.getX (), e2.getX (), velocityX); } Public boolean isSwipeRight (MotionEvent e1, MotionEvent e2, float velocityX) {return isSwipe (e2.getX (), e1.getX (), velocityX); } Private boolean isSwipeDistance (float coordinateA, float coordinateB) {return (coordinateA - coordinateB)> this.swipe_distance; } Private boolean isSwipeSpeed ​​(float velocity) {return Math.abs (velocity)> this.swipe_velocity; } Private boolean isSwipe (float coordinateA, float coordinateB, float velocity) {return isSwipeDistance (coordinateA, coordinateB) && isSwipeSpeed ​​(velocity); }}

Тепер, коли у нас є зручний клас, говорить, що виконаний той чи інший жест, його можна включити в наш призначений для користувача інтерфейс. Нагадаю, що спочатку ми створили дію за замовчуванням, яке назвали OverheardWord. Ми збережемо всі деталі коду за замовчуванням, які дає Eclipse, але дещо додамо. Для прослуховування дії смахивания і реагування на нього визначимо метод Android GestureDetector, який приймає реалізацію OnGestureListener. На щастя, розробники Android створили зручний клас, який можна реалізувати через анонімний клас SimpleOnGestureListener. Потім ми перевизначити метод onFling.

Виявлення смахивания в інтерфейсі

У методі дії onCreate приступаємо до створення детектора жестів GestureDetector з процесом SimpleOnGestureListener, в якому використовується клас SwipeDetector.

Наступним кроком потрібно написати код повідомлення для вказівки того, що подія по жесту змахування спрацювало. Таке маленьке, короткоживучі повідомлення в Android називається Toast У деяких випадках Toast може складатися всього з одного рядка коду.

Лістинг 5. GestureDetector

private GestureDetector initGestureDetector () {return new GestureDetector (new SimpleOnGestureListener () {private SwipeDetector detector = new SwipeDetector (); public boolean onFling (MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {try {if (detector.isSwipeDown (e1 , e2, velocityY)) {return false;} else if (detector.isSwipeUp (e1, e2, velocityY)) {showToast ( "Up Swipe");} else if (detector.isSwipeLeft (e1, e2, velocityX)) { showToast ( "Left Swipe");} else if (detector.isSwipeRight (e1, e2, velocityX)) {showToast ( "Right Swipe");}} catch (Exception e) {} // for now, ignore return false; } private void showToast (String phrase) {Toast.makeText (getApplicationContext (), phrase, Toast.LENGTH_SHORT) .show ();}}); }

Тепер у нас є метод initGestureDetector, який обчислює діапазон і швидкість руху смахивания. По-перше, він створює анонімний екземпляр SimpleOnGestureListener і забезпечує реалізацію методу onFling. Зауважте, як метод onFling використовує SwipeDetector. Наприклад, якщо відбувається розпізнавання смахивания вгору, то Toast вказує на це рух.

Наступний крок - включення дії виявлення жесту змахування в призначений для користувача інтерфейс. Почнемо з реєстрації декількох прослуховуючих процесів з екземпляром View.

Лістинг 6. Реєстрація виявлення жесту змахування в поданні View

private GestureDetector gestureDetector; protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_overheard_word); gestureDetector = initGestureDetector (); View view = findViewById (R.id.LinearLayout1); view.setOnTouchListener (new View.OnTouchListener () {public boolean onTouch (View v, MotionEvent event) {return gestureDetector.onTouchEvent (event);}}); view.setOnClickListener (new OnClickListener () {public void onClick (View arg0) {}}); }

У методі onCreate я отримую дескриптор для фактичного примірника View за допомогою його Id. Більшість Java-розробників оцінить цю зручну особливість Android.

Метод пошуку уявлення по ID

Пам'ятайте, як ми визначили XML-файл для свого призначеного для користувача інтерфейсу разом з відповідними значеннями в різних файлах ресурсів (таких як strings.xml)? При компіляції Android-додатки цей XML-файл перетворюється в згенерований код, і йому присвоюються відповідні Id в класі R. Перш ніж піти далі, перевірте клас R в каталозі gen свого проекту.

Подивіться на XML-файл макета (як ви пам'ятаєте, я назвав його activity_overheard_word.xml). У цьому XML-файлі у кожного віджета є атрибут id. Наприклад, id макета мого програми буде android: id = "@ + id / LinearLayout1", або для стислості LinearLayout1. Ім'я Id Eclipse генерує автоматично, але його можна змінити. Важливо, що у idLinearLayout1 є відповідне властивість в класі R, як показано в лістингу 7.

Лістинг 7. Ідентифікатори віджетів в класі R

public static final class id {public static final int LinearLayout1 = 0x7f090000; public static final int action_settings = 0x7f090004; public static final int word_study_definition = 0x7f090003; public static final int word_study_part_of_speech = 0x7f090002; public static final int word_study_word = 0x7f090001; }

Об'єднуючи вміст XML-файла з відповідним файлом R, можна викликати віджети без необхідності аналізу XML. Тому, повертаючись до методу onCreate, можна викликати віджет View по його id: R.id.LinearLayout1. Метод findViewById надається платформою Android при розширенні Activity.

Змахування пальцем працює!

Коли у нас є екземпляр View, до нього можна додати свій екземпляр gestureDetector за допомогою методу setOnTouchListener. У лістингу 6 ще один анонімний клас тепер обробляє всі дії торкання. Коли користувач стосується екрану пристрою, ця подія спрацьовує і впливає на gestureDetector. Я також реалізував OnClickListener і встановив його в методі setOnClickListener; але в цьому випадку у анонімного класу немає поведінки.

В результаті вийшов зовсім не складний інтерфейс, який реагує на жести смахивания пальцем. Таких жестів три: вліво, вправо і вгору. Спробуйте цей код в своєму AVD. Для імітації смахивания натисніть кнопку миші і перетягніть її вліво, вправо або вгору.

Тепер пора перевірити це додаток в дії на реальному пристрої.

Розгортання в процесі розробки

У відповідь на поширення вірусів, троянських коней і шкідливих програм, цього бича нічого не підозрюють користувачів, Apple і Google ввели форму підпису коду сторонніх додатків, що працюють на їх пристроях. Теоретично підписи є гарантією, що цей додаток - з авторитетного джерела і що ніхто не змінив двійковий файл, який ви встановлюєте. На практиці ж коди підписи Google і Apple розрізняються. Наприклад, підписуючи Android-додаток, я можу стверджувати, що я - відомий державний банк. Підписуючи додаток для iOS або Windows Phone 8, цього не зробиш.

У режимі розробки про підписання коду можна не турбуватися. Android і Eclipse створюють підписаний двійкового коду з ключем розробника, невідомим програмісту. Так що помістити додаток на пристрій в режимі розробки неважко. Найпростіший спосіб - підключити Android-пристрій до порту USB свого комп'ютера.

Потім перейдіть в Eclipse, клацніть правою кнопкою миші на проекті і виберіть Run As menu, а потім Run Configurations. Eclipse відображає діалогове вікно конфігурації, де можна вибрати проект і перейти на вкладку Target, як показано в лістингу 9.

Малюнок 9. Вибір пристрою для запуску програми

Можна вибрати режим Always prompt to pick device (завжди пропонувати вибрати пристрій) або Launch on all compatible devices / AVD's (запустити на всіх сумісних пристроях / AVD's). В останньому випадку виберіть параметр Active Devices і натисніть кнопку Run. Через кілька миттєвостей на вашому пристрої з'явиться симпатичне додаток. Змахніть пальцем вліво, вправо, вгору, і ви побачите прості повідомлення, які підтверджують, що все працює.

параметри безпеки

Якщо з системи електронної пошти або Dropbox додаток завантажити не вдається, перейдіть у вікно настройки пристрою і включіть режим Unknown Sources (невідомі джерела) в розділі Security Settings (параметри безпеки). Після цього зміни можна буде встановлювати додатки не з Google Play, в тому числі ті, які ви розробляєте.

Ще один спосіб установки програми - відправити собі файл .apk по електронній пошті, а потім відкрити його на пристрої Android і слідувати інструкціям в діалоговому вікні автоматичної установки. Інакше, можна завантажити файл .apk в таку службу, як Dropbox, потім відкрити Dropbox на своєму пристрої та встановити додаток звідти. Файл .apk додатка знаходиться в каталозі bin проекту, куди Eclipse також поміщає відповідні виконавчі файли.

Майте на увазі, що ці механізми установки призначені лише для тестування в процесі розробки, а не для цілей поширення. Для комерційного поширення програми потрібен кілька додаткових кроків, про які я розповім в наступній статті.

Висновок

При розробці мобільних додатків потрібно мислити категоріями простоти і легкості. У цьому місяці ви дізналися, як запрограмувати мобільний додаток, щоб воно реагувало на жести смахивания, а не кнопки, звичні користувачам настільних і Web-додатків. У деяких випадках мобільний додаток все ж може мати одну-дві зручні кнопки. Але вони повинні в точності відповідати завданню користувача. Для нашого надпростий додатки Overheard Word кнопки не потрібні, а розроблені нами жести смахивания пальцем вгору-вниз інтуїтивно зрозумілі більшості користувачів мобільних додатків.

Ми коротко розглянули тут процес розгортання мобільного застосування, але дійшли тільки до тестування - вам ще належить освоїти комерційне поширення додатків. Більшість користувачів не встановлює додатки з ненадійних джерел, тому найбільш успішні програми поширюються через посередника, такого як Google Play, iTunes App Store або Amazon Appstore для Android. У наступній статті я покажу процес, необхідний для дотримання стандартів безпеки магазинів додатків. Цей процес йде трохи далі простого підписання додатка. Зате коли ваше додаток розміщено у великого дистриб'ютора, воно стає доступним всьому світу.

Ресурси для скачування

Схожі теми

  • Оригінал статті: Mobile for the masses: Take a swipe at it! Programming gestures in Android .
  • Програмування для мобільних пристроїв - в маси: Частина 1. Спрощене введення в Android (Ендрю Гловер, developerWorks, березень 2013): практичне запровадження в процес налаштування середовища розробки і створення свого першого додатка для Android.
  • Введення в розробку для платформи Android (Frank Ableson, developerWorks, травень 2009 року): вступна стаття з оглядом архітектури Android-додатків.
  • User interface design for the mobile web (James L. Lentz, developerWorks, липень 2011 року): про проблеми юзабіліті мобільних Web-додатків і деякі рекомендації по їх розробці.
  • C-Swipe: An Ergonomic Solution To Navigation Fragmentation On Android (Greg Nudelman, Smashing Magazine, 25 березня 2013): докладніше про ергономіку навігації жестами для мобільних пристроїв, включаючи шаблон для виявлення напівкругових рухів великого пальця.
  • Android-розробникам: уявлення для жестів смахивания : Моделі навігації смахивания з документації Android.
  • The Latest Infographics: Mobile Business Statistics For 2012 (Mark Fidelman, Forbes.com, травень 2012 року): комерційна статистика, починаючи з середини 2012 року, показує, що розробка і поширення мобільних додатків процвітає як ніколи - на цьому наголосив і генеральний директор Apple Тім Кук.
  • Завантажити Android : SDK Android надає бібліотеки API і інструменти розробника, необхідні для побудови, тестування і налагодження додатків для Android.
  • Інші статті цього автора (Ендрю Гловер, developerWorks, з серпня 2004 року по теперішній час): читайте про хмару, Twitter, Google, Hadoop, Android, Ajax і інших Java-технологіях.

Підпишіть мене на повідомлення до коментарів

Com/search/csass/search/?
Інформацію якого типу відображає додаток, які його функції і як користувачі будуть звертатися до того й іншого?
То чи не краще розробити додаток саме для цього ринку?
Encoding = "utf-8"?
Здогадуєтеся, що саме?
Чи необхідні вони?
Чи часто користувач натискає кнопки в мобільних додатках?
Чи не зручніше чи змахнути пальцем вліво або вправо, щоб побачити нові слова, і вниз, щоб відповісти на питання?

Новости

Banwar.org
Наша совместная команда Banwar.org. Сайт казино "Пари Матч" теперь доступен для всех желающих, жаждущих волнения и азартных приключений.

Фольгированные шары с гелием
Для начала давайте разберемся и чего же выполнен фольгированный шар и почему он летает дольше?! Как вы помните, наши латексные шарики достаточно пористые, поэтому их приходится обрабатывать специальным