Използване на клавиатурата, хардуерните клавиши и 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 сцени.