Android клавиатура и хардуерни бутони

Хардуерни и клавиши на клавиатура

хардуерни бутони и клавиатура има следните методи за обработка

  • onKeyDown () - извиква, когато всеки хардуерен ключ;
  • onKeyUp () - извиква при произволен клавиш хардуер се освобождава;

В допълнение към ключовете, има и други методи за обработка на потребителя вход (не са включени тук):

  • onTrackballEvent () - предизвикани от тракбол движение;
  • onTouchEvent () - манипулатор сензорен екран събития, предизвикани от допир, както и оттеглянето на пръста, докато плъзгате.

За да си компоненти и активно реагира на натиснатите клавиши замени товарачи onKeyUp () събитие и onKeyDown ():

Кодът параметър съдържа ключ код, който е бил натиснат; я сравни с статичните ключови кодове, съхранявани в класа KeyEvent. за извършване на съответната обработка.

KeyEvent вариант също включва няколко метода: isAltPressed (). isShiftPressed () и isSymPressed (). определяне дали функционалните бутони са натиснати, като Alt, Shift и Sym. Статично isModifierKey () метод се кодът и определя дали е натиснат бутон е модификатора.

Бутон назад: Сигурни ли сте, искате да излезете от програмата?

За да се реализира подобен проблем, е необходимо да се замени поведението чрез бутона Назад onBackPressed () метод, както следва:

Android клавиатура и хардуерни бутони

Този метод се появи в Android 2.0. За по-ранни версии се използва стандартен код боравене onKeyDown ():

Двойно щракване върху бутона Назад

Друг вариант - да излезете от приложението, когато щракнете два пъти върху бутона Назад. Полезна в случаите, когато смятате, че потребителят може случайно да натиснете бутона, например, по време на активна игра. Приложението ще се затвори, когато потребителят двойни кликне върху бутона за две секунди.

Начало бутон

Може да се проследи чрез натискане на метод onUserLeaveHint дейност Home бутона ()

бутон Обработка Меню

Трябва да отбележа, че продължително натискане е трудно да се разбере, както обикновено, натискате постоянно потискат това събитие.

други бутони

Ами всъщност можете да следите не само с помощта на бутона за менюто, но върху бутона за търсене и бутона за увеличаване на звука.

Моля, имайте предвид, че за бутоните за сила на звука се връща лъжа. т.е. ние не отменя поведението на един бутон и да го оставя на преценката на системата.

Пример за работа с бутоните за сила на звука може да се намери в статията Мелодии. контрол на звука

Същият принцип работи onKeyUp метод (). onKeyLongPress (метод) може да се използва, ако метод event.startTracking () се използва в onKeyDown (метод). Следвайте поведение Бътън. В нашия пример, ние проследяват Volume_Up бутон.

скриване на клавиатурата

Стана така, че при започване на активност веднага се появи клавиатура. Ако такова поведение не е искал, а след това пише в манифеста на желаната стойност в андроид атрибут: windowSoftInputMode (виж по-долу.).

В някои случаи би било желателно да се отстрани на клавиатурата от екрана, без да натискате бутона за връщане назад, и софтуера. В един молбата ми, където много от текстовите полета използвам следния код, когато потребителят кликне върху бутона:

Кодът изглежда по този начин, ако го напиша в дейността. Ако го поставите в друг клас, например активност трябва да се предава като параметър да се обадя методи и как activity.getApplicationContext (). където активност - например активност.

Компонент може да се отърве от фокус:

За да накарате клавиатурата на дисплея, използвайте следния код:

Между другото, спомням метода за да затворите клавиатурата. Този метод не изисква наличието на елементи View.

Ако продължим темата за шоуто на клавиатурата, може да е следната ситуация. Да кажем, че имате DialogFragment EditText. В получаването на диалоговия прозорец трябва да настроите фокуса върху EditText и да се покаже на клавиатурата:

Освен това, използването на маркера за желания EditText.

Промяна на типа на клавиатурата за EditText

Когато елементът EditText е на фокус, се появява на клавиатурата. Възможно е да се създаде желания изглед клавиатура чрез InputType атрибут или програмно чрез setInputType () метод:

TYPE_CLASS_DATETIME - дата и час
TYPE_CLASS_NUMBER - фигури
TYPE_CLASS_TEXT - писма

Повторно дефиниране на бутона Enter

Освен InputType атрибут, можете да използвате атрибута Android: imeOptions в EditText компонент. която ви позволява да промените клавиша на клавиатурата с други клавиши, например, Next. Отидете. Търсене и т.н. Възможните стойности .:

За да видите всички опции от първа ръка, можете да създадете няколко текстови полета и да превключвате между тях:

За да отговори на пресоването на различни състояния Enter, трябва да приложат на интерфейса TextView.OnEditorActionListener бутон. Малък пример:

В нашия пример, ако даден потребител търси нещо, което не е свързано с котката, бутона за търсене, няма да извърши желанието на устройството за собственик.

Можете също така да промените текста на бутона с андроид атрибут: imeActionLabel:

Текстът върху бутона се е променило, но Въведете обработката на предишния пример I са спрели да работят. Моето бъги код в паметта.

Upd: Reader Максим Г. предложи следното решение на проблема. Премахване imeOptions атрибути. imeActionId. imeActionLabel и инсталиране на софтуера си.

По искане да следите само в желаната област. Сложете допълнително условие, след като първото устройство, ако:

интерфейс OnKeyListener

За да отговори на пресоването на ключовете вътре в текущия изглед на дейност, прилагане OnKeyListener интерфейс и да го възложи на Виж обекта. Използвайки метод setOnKeyListener (). Вместо прилагане на някои методи за натискане на клавиш и освобождаване събития, OnKeyListener използва onKey едно събитие ().

Използвайте параметър кодът за ключа, който е бил натиснат. Параметър KeyEvent трябва да признаем, вида на събитие (в лицето на постоянно натискане и отпускане ACTION_DOWN -. ACTION_UP).

смяна дейност

С изскачащите клавиатура не е закрита от интерфейс елемент, който има фокус и измести дейността нагоре може да бъде в манифеста за желаната активност за регистрация на атрибут Android: windowSoftInputMode с параметър adjustPan:

Също така на разположение са и други възможности:

  • stateUnspecified - настройката по подразбиране. Самата система избира подходящо поведение клавиатура.
  • stateUnchanged - клавиатура запазва последното си състояние (видими или невидими), когато активността на текстовото поле е на фокус.
  • stateHidden - клавиатурата е скрит, когато отваряте активност. Клавиатурата се появява, когато пишете. Ако потребителят превключва на друга дейност, клавиатурата ще бъдат скрити, но когато се връщат обратно на клавиатурата остава на екрана, ако то е видимо в дейността на затваряне.
  • stateAlwaysHidden - клавиатура винаги е скрит, ако дейността получава фокуса.
  • stateVisible - клавиатура видими.
  • stateAlwaysVisible - клавиатурата става видима, когато потребителят отвори дейност.
  • adjustResize - размери на компонентите в активния прозорец могат да бъдат променени, за да се направи място за мека клавиатура.
  • adjustPan - екран дейност и нейните компоненти не са се променили и изместиха така че текстовото поле с фокус не е затворена от клавиатурата.
  • adjustUnspecified - настройката по подразбиране. Самата система избира желания режим.

Параметри със състоянието на префикс може да се комбинира с настройките префикс коригира:

Например, за да се покаже клавиатурата при стартиране на дейността, да се използва stateVisible.

Тези настройки са достъпни по програмен път. Например, кодът за adjustResize:

Между другото, този код няма да работи в режим на цял екран (FLAG_FULLSCREEN флаг). Вижте документацията.

Научете езика, избран от клавиатурата

За определяне на текущия език, можете да използвате следния код от клавиатурата.

Трябва да бъдете внимателни с примера. На емулатора с Android 6.0, например, за да работи правилно. На реални устройства мога да се определя правилно на български език, но когато преминете към английския език даде празен низ или стойност "ZZ". В този случай, можете да прибегнете до ако условията и проверете очакваната стойност.

Допълнителна информация