Monthly Archives

3 Articles
Android Validator 1.0 Released

Android Validator 1.0 Released

Android-Validator

Form Validator Library for Android

Presentation

Form Validator Library for Android is based on Zend_Validator coded in PHP. This library is intended to simplify and streamline the code to validate a form Android. For the moment, the form can just handle the EditText. Other elements will emerge in future versions.

License

Warning

With Android 4.2, the error display has undergone a display bug. Sometimes, the error fields do not appear in the display. I hope that Google will repair this problem quickly due to Android in itself and not the library.

Use

Form Validator Library is composed of 3 members :

  • Form : Contains all beings validates to treat. This is the Form that manages the display of error messages in the various elements.
  • Validate : Contains all the validators to be treated for a given element.
  • Validator : Can define a validation rule.

Validator

The validator is basic class for this library. It contains specific validation rules. To instanciate validator, you just have to do this (EmailValidator for example):

new EmailValidator(context);

For some validators, functions can change the validation rules. The validator currently contains three basic validation rules:

  • EmailValidator : Ensures that the field does contain a email address. You can also define a regex to check for a particular domain name with the function setDomainName(DomainRegexp). Example for gmail.com domain : setDomainName("gmail\\.com").
  • NotEmptyValidator : Ensures that the field is not empty.
  • UrlValidator : Ensures that the field is a valid url.
  • AlnumValidator : Ensure that the feld has Alnum characters.
  • HexValidator : Ensure that the field has Hex characters.
  • RegExpPattern : Ensure that the field does match setted Pattern.
  • Custom Validator : You can create your own Validator. To do this, you can just create class extends AbstractValidator :

    public class CustomValidator extends AbstractValidator
    {
        // Your custom error message
        private int mErrorMessage = R.string.validator_custom; 
    
        public CustomValidator(Context c) {
            super(c);
        }
    
        @Override
        public boolean isValid(Object value) {
            // Your validation Test is here.
            // Retour true if it's correct, false if it's incorrect
            return true;
        }
    
        @Override
        public String getMessage() {
            return mContext.getString(mErrorMessage);
        }
    }
    

Validate

The pure Validate class is a FIFO validator. It’s test a list of AbstractValidator for specific EditText. For some special cases, Validate is not enough. This is why there are specific validates. This is why there are two individuals with a Validate operation different from that base :

  • ConfirmValidate : Can check whether a value is identical between the two fields. Can be used to confirm the entry of a password.
  • OrTwoRequiredValidate : If one of the two target fields has a value, then it is valid. Can be used if a user must give his phone or fax.
  • Validate : The base Validate. It creates his validators stack.

Basicly, Validate can only handle a single EditText. If you want to manage several at the same time, see if ConfirmValidate or OrTwoRequiredValidate match your problem. If this is not the case, you may need to create your own Validate. To instantiate a Validate, you just have to do this:

Validate emailField = new Validate(email);

And to add Validator stack, for example to add a required Email field, you have to do this:

emailField.addValidator(new NotEmptyValidator(mContext));
emailField.addValidator(new EmailValidator(mContext));

Form

The Form class is the class teacher of the whole Library. It manages the processing of each Validate, Validator and displays the error on the EditText automatically. The Form class stores a Validate stack and then you just have to run the validation with the validate() function. To instanciate Form and add Validates, you have to do this :

Form mForm = new Form();
mForm.addValidates(emailField);
mForm.addValidates(confirmFields);
mForm.addValidates(urlField);

// ...

// Launch Validation
if(mForm.validate()){
    // success statement
}else{
    // error statement like toast, crouton, ...
}

Changelog

  • 0.1 : Create library
  • 0.2 : Add ConfirmValidate and OrTwoRequiredValidate
  • 0.3 : Extends EmailValidator with setDomainName()
  • 0.4 : Replace Validator by AbstractValidator
  • 0.5 : Fix bug in UrlValidator
  • 1.0 : Add AlnumValidator, HexValidator, RegExpValidator, ValidatorException. Fix Validate class.
Migrer sur IntelliJ ses projets Android

Migrer sur IntelliJ ses projets Android

Juste avant vos fêtes de Noël, je vous propose un petit article tout simple vous présentant l’IDE alternatif IntelliJ. Nous allons voir ses fonctions principales et comment migrer votre développement dessus. Bien entendu, cet IDE est disponible gratuitement au téléchargement si vous optez pour la version Community Edition. Heureusement pour nous, elle suffit amplement au développement Android mais, si vous voulez aller plus loin dans le développement JAVA en utilisant certains frameworks, vous devriez certainement opter pour la version Ultimate.

Présentation

IntelliJ est un IDE java développé par la société JetBrains. Cet IDE est, comme Eclipse, Netbean, … codé en JAVA et disponible sur toutes les plateformes (Windows, Mac et Linux). Comparé aux autres IDE, IntelliJ est pensé pour développer QUE des applications JAVA et Android (bon ok, Android c’est aussi du JAVA mais passons). Depuis sa dernière version  en date, la 12.0, IntelliJ se dote d’un thème Dark et d’une meilleure compatibilité avec le développement Android. Il intègre un outil de création de vues aussi complet que celui fourni par l’ADT dans Eclipse. De plus, cet éditeur comprend la compatibilité avec la plupart des frameworks JAVA ainsi qu’une compatibilité avec ANT.

Enfin un IDE qui ne flash pas quand on développe dans une cave.

Enfin un IDE qui ne flash pas quand on développe dans une cave.

Personnellement, cet IDE semple beaucoup plus léger qu’Eclipse et consort. De plus, sur de gros projets Android, nous n’avons plus d’OOM lors de la compilation (arrivée plusieurs fois sur Eclipse si je laisse le .ini de base). Bref, si vous devez choisir un IDE, je vous conseillerai de tester celui-ci avant votre choix définitif (et qui sait, peut-être qu’un nouvel IDE mettra la barre encore plus haut dans un futur proche). Si vous voulez des renseignements supplémentaires, au lieu de bêtement copier/coller la présentation du site via Google Trad, je vous conseille de vous rendre ICI.

Importation de mes anciens projets

Maintenant, nous allons nous attaquer à ce que vous allez certainement faire si vous voulez continuer vos projets en cours sur cet IDE. Pour cela, vous avez plusieurs possibilités :

  • Ouvrir directement le répertoire du projet sur votre PC
  • Checkout depuis différents dépôts de version : Git/GitHub/SVN/Mercurial/CVS

Après avoir importé votre projet, vous devez indiquer quel SDK est utilisé pour votre projet. Pour cela, vous devez aller dans les paramètres du projet disponibles directement dans la barre d’actions.

Le bouton est entouré en rouge

Le bouton est entouré en rouge

Ensuite allez dans la partie Project puis sélectionnez votre SDK. De base, vous devriez en avoir aucun. Il va faloir les rajouter. Cliquez donc sur le bouton New et ajoutez d’abord le JDK puis ensuite rajoutez le ou les SDK Android dont vous avez besoin.

Quand vous avez votre SDK, sélectionnez le.

Quand vous avez votre SDK, sélectionnez le.

Il vous fautra aller ensuite dans la partie Module puis rajouter le module Android à votre projet. Si vous oubliez cette partie le projet ne compilera jamais car il manquera la partie gen, la classe R et toutes les libraries externes.

Voilà, notre module est ajouté

Voilà, notre module est ajouté

Si votre projet vient d’Eclipse, il se peut que vous ayez deux libraries vous notifiant une erreur. Il s’agit de libraries rajoutées automatiquement par ADT pour qu’Eclipse puisse parcourir le SDK. Supprimez les simplement puis validez. Normalement votre projet devrait compiler.

Maintenant il faut aussi faire une configuration pour lancer vos applications sur l’émulateur et/ou un appareil Android. Pour cela, cliquez sur la flèche à gauche de Play puis sur « Edit Configurations ». Une nouvelle fenêtre apparaît. Cliquez sur le « + » puis sur Android Application. Sélectionnez en Module votre projet puis ensuite réglez le reste comme bon vous semble. Appliquez et c’est bon. Maintenant vous pouvez lancer votre projet.

Simple non?

Simple non?

Vous avez autant de réglages que sur Eclipse

Vous avez autant de réglages que sur Eclipse

Conclusion

Vous savez maintenant continuer vos différents projets Android sur IntelliJ. Seul défaut, cet IDE ne gère qu’un seul projet par fenêtre. De plus, je n’ai pas encore essayé les Libraries Projets donc je ne peux pas dire si ça marche ou non. Espérons que Google fournisse enfin un outil pour convertir ses projects libraries avec ressources en JAR comme pour son SDK et les googleAPI.

Bref, si vous ne savez pas quel IDE utiliser ou si vous en avez marre d’Eclipse, de ses bugs et de ses lenteurs légendaires, je vous conseille vivement d’essayer et d’adopter IntelliJ comme je viens de le faire. 

Fritte et moi nous vous souhaitons un Joyeux Noël

Refonte du design (Et Rebelote)

Refonte du design (Et Rebelote)

Comme vous devez le constater, le site a été entièrement refondu en essayant de tirer parti des guidelines Android. Vu qu’en ce moment il y a plus d’articles Android que d’articles PHP (même si certains sont en approche), il m’a semblé normal de le refondre tel quel. Je vais donc vous faire un petit tour des particularités de ce nouveau thème. Si certains d’entre vous sont intéressés par la suite, merci de me l’indiquer dans les commentaires.

Présentation Générale

Comme dit plus haut, le thème se base sur les guidelines Android et utilise donc la touche graphique du thème Holo.Light. Pourquoi le light et non le Dark? Juste une histoire de goût. Je le trouve plus sobre et classe que son contraire. Vous verrez que je joue beaucoup avec les 5 couleurs d’Android. A savoir le bleu, violet, vert, jaune/orange, rouge. J’en joue tellement que selon l’emplacement de votre widget, il optera directement pour une de ces couleurs. Idem au niveau du footer et du header.

Le Header

Le header est composé de 3 éléments. Une ActionBar repensée dans l’esprit d’Android. Au niveau de l’Overflow (les 3 points à droite) vous avez accès aux pages du site. A savoir Contact et A propos (sera mis à jour dans les prochains jours). Bien entendu, le header est responsive et changera de forme pour pouvoir fonctionner parfaitement sur smartphones et tablettes.

On se croirait sur tablette non?

On se croirait sur tablette non?

Ensuite arrive les icônes sociaux à droite. Ils sont au nombre de 6. Vous aurez donc droit, dans l’ordre, aux feeds, mon twitter, mon linkedin, mon Google+, ma bibliothèque GitHub et la liste de mes applications Android. Pourquoi n’y a t’il pas la possibilité de rajouter facebook? Je ne trouve pas facebook professionnel.

Ils sont pas beau?

Ils sont pas beau?

Pour finir, vous trouverez à gauche l’emplacement pour un Logo et un sous-titre pour votre site.

Les Widgets

Les widgets à droite ont pour base celui de GMail sur Android (et oui encore un énorme clin d’oeil). Il faut savoir que tous les widgets ne sont pas obligatoirement adaptés à ce thème. Je ne me suis concentré que sur ceux que j’utilisais et encore, avec ceci, j’ai dû en recréer deux pour qu’ils s’adaptent parfaitement. Il s’agit des commentaires récents et des Posts Populaires. Bien entendu, ils sont arrangés de telle façon à être disposées sur la sidebar ou dans le footer. 

Ah, il est en seconde position. D'où le vert

Ah, il est en seconde position. D’où le vert

Pour ce qui est du footer, j’ai joué sur la sobriété pour l’apparence des widgets. Malgré tout, on retrouve les mêmes bases entre les deux emplacements.

Sobre n'est-il pas?

Sobre n’est-il pas?

Article et Formulaires

Pour ce qui est des différents cadres pour séparer chaque article, pages, formulaires, bloc de commentaires, … je me suis inspiré des cartes dans Google Now. L’intégration avec les rajouts Jetpack est bien fonctionnelle et se marie très bien avec le thème.

Oh j'ai une card dans Google Now

Oh j’ai une card dans Google Now

Pour ce qui est des formulaires, vous avez certainement reconnus le design Android aussi ici. Pour le réaliser, ça n’a pas été simple. Surtout pour son intégration. D’ailleurs  si vous voulez le code à rentrer dans Contact-Form-7 pour qu’il s’intègre parfaitement au thème, n’hésitez surtout pas à me le demander.

Je suis sur une appli native?

Je suis sur une appli native?

Conclusion

Voilà pour la présentation du nouveau thème. Vous découvrirez d’autres particularités en navigant à travers le blog. Bien entendu, si vous êtes intéressés par ce thème pour le réutiliser, merci de l’indiquer dans les commentaires. Ce thème est bien entendu compatible IE mais dans ses version 9 et supérieures ainsi que tous les navigateurs utilisant le moteur de rendu Webkit. Firefox n’est pas en reste loin de là.

Voilà à quoi cela devrait ressembler sur votre smartphone

Voilà à quoi cela devrait ressembler sur votre smartphone

Comme indiqué, le site est Responsive. Qu’est-ce que cette bête? Et bien simplement que le site se réadapte automatiquement selon la taille de l’écran. Vous aurez donc le même site avec le même design que vous soyez sur mobile, tablette, ordi, télé, … Pour se faire, j’ai utilisé l’un des nombreux « frameworks » CSS/Html5 existant à savoir le framework Foundation.

Sur ce, je vous souhaite une très bonne journée à tous.