AIR Mobile – Les composants et le thème Mobile Flex 4.5
L'avantage de pouvoir utiliser les composants Flex par rapport à une application pure AS3 est de simplifier le développement en vous donnant toute une bibliothèque de composants prêts à l'emploi. Certains composants sont de nouveaux composants, d'autres ont simplement une autre "Skin" optimisée pour le rendu mobile (plus gros, système de cache, etc.). Bien sûr, vous pouvez toujours faire vos propres composants mais on va voir ceux qui sortent directement du four. Dans ce billet, on va découvrir ces composants et leurs looks pour vous donner une idée.
Notez que les itemRenderer seront couverts dans un autre billet sur flex-tutorial.
Bouton
Ce n'est pas un nouveau composant, seulement le composant s:Button avec un look différent lorsque vous l'utilisez dans un projet de type Mobile:
Notez que le composant Spark Button a retrouvé sa propriété "icon" vous permettant d'ajouter un icône directement avec la Skin de base (il fallait faire sa propre Skin auparavant).
Flex 4 – Création d’une Skin pour le composant HSlider
Prenons tout d’abord le composant HSlider de base de Flex 4 :
Comme on l’a vu dans l'article précédent, dans la déclaration des SkinPart, on a "thumb" et "track" qui sont des boutons. On va laisser de côté, pour cet exemple, la Skin du DataTip. Pour créer une Skin, on va donc créer deux Skins de Button, un peu comme on l’a fait dans l’exemple précédent.
Pour la "track", on va simplement créer un rectangle arrondi avec un remplissage et une ombre portée. Ce fichier s’appellera MyTrackSkin.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<s:Rect radiusX="2" radiusY="2" top="0" right="0" bottom="0"
left="0" height="3">
<s:fill>
<s:SolidColor color="0xFF3300"/>
</s:fill>
<s:stroke>
<s:SolidColorStroke color="0x3E3E3E" weight="1" />
</s:stroke>
<s:filters>
<s:DropShadowFilter blurX="5" blurY="5"
alpha="0.32" distance="2" />
</s:filters>
</s:Rect>
</s:Skin>
Pour la "thumb", on va simplement créer une ellipse avec un remplissage. Ce fichier s’appellera MyThumbSkin:
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<s:Ellipse width="12" height="12">
<s:fill>
<s:SolidColor color="0xFF33FF"/>
</s:fill>
<s:stroke>
<s:SolidColorStroke color="0x3E3E3E" weight="1" />
</s:stroke>
</s:Ellipse>
</s:Skin>
Il ne nous reste plus qu’à créer la Skin du Slider à proprement parler. Celle-ci sera constituée de nos deux composants. Notez leurs propriétés « id », liées aux SkinPart que l’on a décrit plus haut :
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Metadata>
[HostComponent("spark.components.HSlider")]
</fx:Metadata>
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
</s:states>
<s:Button id="track" left="3" right="3" top="3" bottom="3" skinClass="MyTrackSkin"/>
<s:Button id="thumb" top="0" bottom="0" width="12" height="5" skinClass="MyThumbSkin" />
</s:Skin>
Il ne nous reste plus qu’à donner notre Skin à notre composant dans l’application Flex principale :
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:layout>
<s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>
</s:layout>
<s:HSlider skinClass="MySliderSkin" width="150"/>
</s:Application>
Voici le résultat de notre Skin très simpliste :
DataFilterLib – Filtres de type DataFilterInterval, opérateurs et sliders
Dans le tutorial DataFilterLib précédent, on a vu comment utiliser les filtres de type DataFilterSingleValue, qui fonctionnent par recherche de chaîne, principalement. On va maintenant voir les filtres de type DataFilterInterval, permettant de filtrer des valeurs suivant si elles sont comprises dans un intervalle ou non.
Les différents opérateurs applicables sur un DataFilterInterval
De base, la librairie DataFilterLib propose plusieurs opérateurs de base. Ces opérateurs servent à indiquer au filtre comment il doit comparer la valeur d'entrée par rapport à la valeur à filtrer.
Afin de déterminer le type de filtrage, la librairie propose, de base, plusieurs opérateurs (4 à ce jour), présents dans la classe DataFilterIntervalOperator:
- IntervalClosed: Intervalle fermé à gauche et à droite (min<= value <= max)
- IntervalOpen: Intervalle ouvert (min< value < max)
- IntervalOpenLeft: Intervalle fermé à droite (min< value <= max)
- IntervalOpenRight: Intervalle fermé à gauche (min<= value < max)
Pour cela, il suffit de choisir une des constantes (static) de la classe DataFilterIntervalOperator et de l'assigner à la propriété "filterOperator" d'un objet DataFilterParameters. Les constantes sont données comme référence, il est préférable de les utiliser plutôt que d'utiliser directement les valeurs associées.
Ainsi, ces deux portions de code sont équivalentes:
filterOperator="{DataFilterIntervalOperator.INTERVAL_CLOSED}"
//
filterOperator="IntervalClosed"
Les propriétés communes à tous les filtres
Tous les filtres de la DataFilterLib ont des propriétés communes comme par exemple la possibilité d'activer ou non un filtre (par l'intermédiaire de la propriété "active". Vous avez aussi la possibilité d'inverser un filtre grâce à la propriété "invert". Si la propriété invert d'un filtre est mise à true, vous n'aurez que les éléments filtrés. Par exemple, sur un filtre de type INTERVAL_CLOSED, vous n'aurez que les éléments qui ne sont pas compris dans l'intervalle, etc.
Flex UIComponent – Les Composants de type Selecteur de Valeur (HSlider, VSlider, NumericStepper, ColorPicker, DateField, DateChooser)
Ces composants permettent à l'utilisateur de sélectionner une valeur. Ils sont tous différents car le type de valeur ainsi que la manière d'y accéder n'est pas la même.
Voici les composants de base (sauf le VSlider qui est la version verticale du HSlider):







