Grâce à l'API Air 2.5, vous pouvez détecter l'appui sur les boutons "hardware" du téléphone. Ce sont les boutons présents sur tous les portables Android.
Ainsi, vous pouvez détecter les appuis sur MENU, BACK et SEARCH. Vous ne pouvez pas détecter l'appui sur HOME, car celui-ci est une "porte de sortie" pour toute application.
Dans le comportement normal d'une application, le bouton BACK vous renvoie vers l'écran ou l'application précédente. Pour une application Air, cela va automatiquement vous faire sortir de l'application, sauf si vous appelez la méthode "preventDefault" sur le KeyboardEvent renvoyé. Dans ce cas-là, l'utilisateur ne sortira pas de l'application.
Ainsi, vous pourrez recréer facilement le comportement des applications natives qui "push" et "pop" des vues les unes au dessus des autres. Une fois le composant ViewNavigator de Hero sorti, vous pourrez, au moment de l'appui sur BACK, faire un "pop" de la vue pour revenir à la vue précédente.
Code de démonstration
Voici une petite application qui vous montre comment écouter les évènements clavier de votre application. Notez que vous devez ajouter le listener au moment de l' APPLICATION_COMPLETE et pas du CREATION_COMPLETE pour que la variable stage soit initialisée correctement
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="0" paddingRight="0"
paddingTop="0" paddingBottom="0"
applicationComplete="application1_applicationCompleteHandler(event)">
<mx:Style>
global {
font-size: 24;
}
</mx:Style>
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
/**
*
*/
protected function application1_applicationCompleteHandler(event:FlexEvent):void {
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, downHandler);
}
public function downHandler(event:KeyboardEvent):void {
switch (event.keyCode) {
case Keyboard.BACK:
// to prevent app going to background use following
if (preventCB.selected) {
event.preventDefault();
}
showInfo("BACK key");
//do action related to BACK key
break;
case Keyboard.SEARCH:
//do action related to SEARCH key
showInfo("SEARCH key");
break;
case Keyboard.MENU:
//do action related to MENU key
showInfo("MENU key");
break;
default:
break;
}
}
private function showInfo(text:String):void {
log.text += text + "\n";
}
]]>
</mx:Script>
<mx:ApplicationControlBar left="0" right="0" bottom="0" height="80" paddingTop="8" paddingLeft="8"
paddingBottom="8" paddingRight="8" horizontalGap="8" verticalGap="8"
dock="true">
<mx:CheckBox id="preventCB" label="Prevent Default Home Button" />
</mx:ApplicationControlBar>
<mx:TextArea id="log" backgroundColor="white" width="100%" height="100%" enabled="false" />
</mx:Application>
Télécharger le projet au format FXP
Télécharger l'application au format APK
11 avril 2012
Merci beaucoup pour cette astuce!