Използване на клавиатурата, хардуерните клавиши и D-pad

Събитие, сигнализиращо натискането на произволен хардуерен бутон, се обработва от методите onKeyDown и onKeyUp, принадлежащи към Activity или избрания View. Това се отнася за клавиатурата, D-pad, клавишите за промяна на звука, навигация, повикване и затваряне. Единственото изключение е началният бутон, който има ограничено взаимодействие, така че потребителят винаги да може да излезе от приложението.

За да накарате вашите изгледи и дейности да реагират на натискане на клавиши, заменете манипулаторите на събития onKeyUp и onKeyDown, както е показано в листинг 15-30.

Списък 15.30.Боравене с натискания на клавиши

публичен булев onKeyDown(int _keyCode, KeyEvent _event)

// Обработване на щракването, връщане true, ако се обработва успешно return false;

публичен булев onKeyUp(int _keyCode, KeyEvent _event)

// Обработване на освобождаването на ключ, връщане на true, ако е обработено успешно

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

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

Използване на интерфейса OnKeyListener

За да отговорите на натискане на клавиш в рамките на съществуващ изглед от дейност, имплементирайте интерфейса OnKeyListener и го присвоете на обекта View с помощта на метода setOnKeyListener. Вместо да прилага отделни методи за събития на натискане и освобождаване на клавиш, OnKeyListener използва едно събитие onKey.Този механизъм е показан в листинг 15.31.

Списък 15.31.Внедряване на OnKeyListener в дейност

public boolean onKey(View v, int keyCode, KeyEvent event)

// TODO Обработва натискането на клавиш, връща true if

// обработката приключи return false;

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

Много мобилни устройства предоставят тракбол като удобна алтернатива (или допълнение) към сензорния екран и D-pad. Събитията с тракбол се обработват чрез замяна на метода onTrackballEvent във вашите изгледи или дейности.

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

движение на тракбола след последното събитие; стойностите се нормализират, така че 1 означава движение, еквивалентно на натискане на D-pad.

Вертикалните промени могат да бъдат получени с метода getY, а хоризонталното превъртане е налично с метода getX, както е показано в списък 15.32.

Списък 15.32.Проследяване на събития, изпратени от тракбола

публичен булев onTrackballEvent(MotionEvent _event)

float vertical = _event.getY();

float horizontal = _event.getX();

// TODO Боравене с движенията на тракбола. връща невярно;

Тази последна глава обхваща някои от по-сложните функции на платформата Android. Научихте повече за механизмите за сигурност в Android, по-специално разгледахте системата за разрешения, която се използва за предоставяне на достъп доИзточници на данни, услуги, дейности, приемници на намерения за излъчване и самите намерения.

Проучихте възможностите за комуникация между процесите с помощта на AIDL (Android Interface Definition Language) за създаване на богати интерфейси между компонентите на приложението.

Повечето от разделите са посветени на класа Canvas, по-специално се разглеждат по-сложни функции, предоставени от библиотеки за рисуване на 2D графики. Тази част от главата ви запозна с процеса на рисуване на наличните графични примитиви и също така демонстрира възможностите на класа Paint.

И накрая, научихте как да взаимодействате с потребителя чрез вашите дейности и изгледи, като наблюдавате и интерпретирате събития от сензорния екран, тракбола и твърдите клавиши.

Учили сте също:

как да използвате WakeLock обекти, за да предотвратите преминаването на устройството в режим на заспиване;

добавете гласово въвеждане към вашите приложения с помощта на библиотеки за преобразуване на текст в реч;

използват Глобалната мрежа като източник на данни или междинна връзка за обработката им, за да направят своите приложения богати на информация, като същевременно запазват своята лекота;

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

създаване на анимация стъпка по стъпка;

прилага графични примитиви, налични за рисуване с Canvas;

извлечете максимума от обекта Paint, като използвате прозрачност, шейдъри, маскиращи филтри, цветни филтри и контурни ефекти;

рисуване върху платно;

приложете хардуерно ускорение при рисуване на 2D сцени.