[Tuto] Créer une interface Android en code

Introduction

Comment créez-vous vos interfaces sous Android ? Je pense que 95% d’entre vous répondront à cette question par la réponse suivante : en XML, dans le dossier layout. C’est sans doute la méthode la plus simple, la plus propre, qui permet une meilleure organisation et relecture. Seulement, il faut savoir que ce n’est pas la seule possibilité et que vous pouvez aussi le faire directement en Java.

Je conseille généralement de le faire lorsqu’il y a un réel intérêt derrière, sinon il s’agit surement d’une perte de temps.

Quels sont les intérêts d’utiliser cette méthode justement ? Ils sont multiples, je vais en citer quelques uns mais vous en trouverez surement d’autres :

  • Répéter la même interface à plusieurs reprises : il est possible de le faire en XML mais ça demande à un travail très répétitif et de toute façon limité.
  • A titre personnel, je maitrise beaucoup mieux la création d’une interface extensible de cette manière. Je suis pourtant un fervent défenseur du RelativeLayout ;)
  • Enfin, cela pourrait vous permettre de créer vos propres éléments d’interface facilement implémentable dans n’importe quel projet.

N’ayant jamais trouvé de réponse complète à mes question lorsque je cherchais moi-même à créer une interface comme celle-ci, je vais essayer d’aller au plus simple mais aussi clairement que possible afin que vous puissiez comprendre parfaitement le fonctionnement. Vous verrez, ce n’est pas si compliqué que ça en a l’air !

C’est parti !

Objectif

L’idée est relativement simple, nous allons partir d’un fichier XML comprenant uniquement un RelativeLayout et ajouter un bouton en son centre.

Nous arriveront donc à un résultat équivalent à celui-ci :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:id="myRelativeLayout">
    <Button android:id="myButton" android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />
</RelativeLayout>

N’hésitez pas à le tester si vous ne visualisez pas bien le rendu final ;)

Comment y parvenir ?

Comme ça :

public class MaClasseIHM{
    private RelativeLayout myRelativeLayout;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        myRelativeLayout = (RelativeLayout)findViewById(R.id.myRelativeLayout);

        // C'est ici qu'on commence à créer le bouton
        Button myButton = new Button(this);

        // La classe LayoutParams permet de paramétrer notre élément d'interface (ici le bouton)
        // Ici la hauteur et la largeur
        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        // Ici on le centre !
        layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);

        // Et enfin on ajoute le bouton à notre RelativeLayout
        myRelativeLayout.addView(myButton, layoutParams);
    }
}

Vous avez à présent tout les éléments entre les mains pour faire des interfaces plus complexes.

Pour aller plus loin

Vous savez maintenant créer un bouton. En l’état ce n’est pas très utile mais ça peut rapidement le devenir si vous souhaitez en créer plusieurs. Par exemple, vous souhaitez créer une quinzaine de boutons ? Instanciez les dans une boucle et ajoutez les à un ArrayList pour en garde le contrôle.

Vous souhaitez maintenant créer une interface plus complexe qui se répètera (un formulaire par exemple) ? Créez alors une classe qui héritera d’un RelativeLayout et instanciez dedans tous vos éléments. Vous n’aurez plus qu’à instancier cette classe dans votre classe principale.

Conclusion

Je pense que nous avons fait le tour, vous pouvez maintenant créer n’importe quelle interface en Java. En cas de problème vous pouvez vous référer à la documentation ou bien directement poser des questions ici-même.

CrackScreen

CrackScreen (ou Ecran Cassé pour les français !), n’est autre qu’une application simulant un écran cassé. Tout ce qu’il y a de plus classique et répandu sur l’Android Market.

Je n’avais aucune intention de la distribuer au départ, il s’agissait simplement d’un petit défi technique me permettant d’apprendre de nouvelles choses sous Android. Ma principale interrogation était de savoir comment obtenir un fond transparent pour simuler au mieux cet écran cassé. La réponse acquise et l’ensemble du système développé, j’ai totalement abandonné cette application. Quelques semaines après, je me suis dit qu’il était bête d’avoir développé tout ça et de ne pas partager avec vous. C’est donc chose faite et il semble qu’elle est en bonne voie pour dépasser ECU (mais pas avant quelques mois !).

Pour là télécharger, c’est par ici : https://market.android.com/details?id=com.alexyu.android.crack

Le pendu

Un belle surprise ce pendu…

Ce jeu est un pendu très classique, le même que celui auquel on a tous joué durant notre enfance. Ajoutez à ça un design plutôt peaufiné, quelques milliers de mots et on obtient quelque chose d’assez convaincant.

Ca fait actuellement un peu plus d’un mois que je l’ai publié sur l’Android Market et ce fût une très agréable surprise. Plus de 1000 téléchargements le premier jour, c’est un très bon début. Pour dire vrai, je ne m’attendais pas à un tel succès, le pendu n’avait pas pour vocation d’avoir autant de téléchargements.
Au jour d’aujourd’hui c’est entre 7000 et 10000 téléchargements par jour et un total de 130 000 téléchargements en l’espace d’un mois. De très bon statistiques qui m’ont laissé sans voix.

Aujourd’hui, c’est grâce à lui que je vais pouvoir devenir auto-entrepreneur en janvier et peut être même en vivre. Mais attention, une application s’entretient et tout n’est pas encore gagné. Wait and see donc !

Pour le télécharger c’est par ici :
https://market.android.com/details?id=com.alexyu.android.pendu

Escape Square

Mise à jour du 10/12/2011 : Escape Square est un projet mis en pause qui n’évoluera plus avant quelque temps. Je préfère me concentrer sur d’autres applications que j’ai très envie de développer.

Escape Square est mon premier jeu Android. C’était pour moi un coup d’essai, un moyen de me lancer dans le monde du jeu. Je pense que le résultat est plutôt convaincant et ça m’a montré que je pouvais faire pas mal de choses !

Dans l’esprit, Escape Square est très proche de Tilt To Live (iPhone), graphiquement il s’approche plus d’un Geometry Wars. Ajoutons à ça mes adaptations et on obtient Escape Square !

Votre objectif dans Escape Square sera de survivre le plus longtemps possible en éliminant vos ennemis. Ainsi, vous accumulerez de plus en plus de points tout au long de la partie.
Attention, vos ennemis seront de plus en plus nombreux pour vous détruire.

Ce qui existe actuellement :

  • 2 modes de jeu
  • Enregistrement des scores en ligne
  • Visualisation des scores en ligne
  • 3 bonus d’attaque et de protection

Ce qui va arriver :

  • 6 nouveaux bonuns par l’intermédiaire de combo avec les bonus de base
  • Enregistrement d’un pseudo en ligne
  • Des patterns d’ennemis
  • Un troisième mode de jeu
  • Et bien d’autres choses…

Pour télécharger la démo c’est par ici, pour la version complète c’est ici que ça passe.

Have fun !

Alexyu

ECU : Contacts d’Urgence

Je vais vous présenter cette fois ma seconde application, quelque chose d’un petit peu plus sérieux que « La classe américaine » et pouvant même parfois être réellement utile. C’est mon beau-frère qui m’a donné l’idée, merci à lui ! Aujourd’hui, je viens d’atteindre les 7500 (Mise à jour du 10/12/2011 : 46000) téléchargements en un peu plus d’un mois, j’en profite donc pour faire un peu de pub.

Cette appli tourne autour du programme ICE (In case of emergency, francisé en ECU : En cas d’urgence), il va permettre en cas d’urgence d’alerter, en un touché d’écran, des contacts ainsi que les secours. J’ose espérer que vous n’aurez pas besoin de cette application, mais sait-on jamais. Je ne vais pas vous refaire la description de l’Android Market :

ECU (ICE – En cas d’urgence) alerte vos contacts et les secours en un seul clic. »ECU : Contact d’Urgence » ou « ICE : Emergency Contact » est une application d’aide aux personnes ayant un problème ou victimes d’accident. Elle est basée sur le programme ECU (En cas d’urgence) ou ICE (In case of emergency) qui consiste à entrer dans son répertoire un contact sous le nom « ICE », contact qui sera alors appelé par les secours en cas d’urgence.

Dans cette application vous entrerez l’ensemble des informations utiles aux secours (Allergies, traitements en cours, pathologies, identité, donneur d’organe, groupe sanguin…) ainsi que les personnes à contacter si besoin est.

Ainsi, en un clic sur votre écran, envoyez un SMS d’alerte à l’ensemble des contacts configurés et appelez immédiatement les secours! Vos contacts sauront alors où vous vous trouvez et pourront vous secourir !

Placez un widget sur votre bureau pour alerter votre entourage (widget compatible avec les écrans de verrouillage alternatifs tel que ScreenLocker).

Cette application a été développée sur les conseils d’un ambulancier.

Liste des droits demandés:
- Envoi de SMS pour contacter vos contacts configurés lorsque vous le demandez
- Accès au répertoire pour que vous puissiez sélectionner vos contacts
- Récupération des coordonnées GPS pour que vos contacts puissent savoir où vous vous trouvez lors d’une alerte

Les informations privée que vous enregistrez dans votre application sont votre propriété et ne sont donc accessible qu’à vous et uniquement depuis votre Androphone.

Cette application ce décline en deux versions:

  • La gratuite, limitée à deux contacts (par ici)
  • La payante sans pub et sans aucune limitation (par ici cette fois)

Pour cette application j’ai abordé là encore pas mal de nouvelles fonctionnalités que je n’avais jusqu’à présent jamais utilisé :

  • Utilisation du GPS
  • Envoi de SMS
  • Accès au répertoire utilisateur
  • Déclenchement d’un appel
  • Création d’un widget !

Et j’en passe surement. Quoi qu’il en soit, si vous vous posez une question sur une fonctionnalité de l’application, j’en ferais très volontiers une présentation du fonctionnement. Il suffit de demander.

Alexyu

La classe américaine

Dans cet article je vais vous présenter très brièvement ma première application Android. Pour ça, rien de tel que la présentation de l’Android Market :

L’application la plus classe du monde.Attention,

Cette appilcation n’est pas une appilcation sur le cyclisme.

Merci de votre compréhension.

Retrouve les répliques cultes de La classe américaine/Le grand détournement… et peut être même Derrick contre Superman :)
Secoue ton androphone afin de jouer une réplique aléatoire.

Rien de bien impressionnant donc, un bête application partie d’une blague qui m’a mis le pied à l’étrier en ce qui concerne le développement personnel sur Android (je ne développais sur Android qu’en milieu professionnel à ce moment).

J’ai découvert quelques notions que je n’avais encore jamais utilisées lors de ce développement:

  • Différentes manières de gérer le son
  • L’utilisation de l’accéléromètre pour détecter un « shake » de l’androphone

Je ferais peut être un petit article présentant ces notions et leur utilisation à l’avenir, si intéressés, n’hésitez pas à me le faire savoir.

Alexyu

Ouverture du blog, my life, etc.

C’est quoi ce blog ?

Ce blog sert à plein de choses, il s’agit d’une sorte de vitrine pour mon travail, mes projets, mais il sera surement aussi un lieu d’expression sur lequel je pourrais partager mes sentiments vis à vis de certaines choses. Enfin, je ne suis pas forcément bon pédagogue mais je pourrais donner un peu de mes connaissances et de mon expérience en développement, principalement sur la plateforme Android de Google.

 

Qui suis-je ?

Depuis peu diplômé d’un Master MIAGE, effectué en apprentissage à l’Université d’Evry, je me suis spécialisé dans le développement d’applications mobiles, touchant à plusieurs plateformes aujourd’hui en vogue :

  • iOS
  • Android
  • Windows Phone 7

Aujourd’hui je souhaite continuer à percer dans cette voie. Je me suis largement spécialisé sur Android, que j’utilise au quotidien, et c’est grâce à lui que j’espère pouvoir développer mon activité et créer mon entreprise.

Mes compétences ne s’arrête pas là puisque j’ai aussi eu la chance de développer en php et asp.NET/C#.NET.

Je ferais mon possible pour rendre ce blog intéressant pour la poignée de personnes qui le lira.

Pour me suivre, rendez-vous sur http://twitter.com/RAlexyu.

 

Bonne lecture,

Alexyu