Comprendre Hello World

Prenez du recul et jetez un coup d'œil au code source de votre première application Android, en commençant par le fichier MainActivity.java. Sous Android, Activity est la classe de base pour les écrans visuels et interactifs de votre application. il est à peu près équivalent à un formulaire dans le développement d'un ordinateur de bureau traditionnel (et est décrit en détail dans le chapitre 3, «Applications et activités et fragments, Oh My!»). AppCompatActivity est une variante de la classe Activity fournie par la bibliothèque de support Android, qui offre une compatibilité ascendante. Utiliser AppCompatActivity plutôt que la classe d’activité est considéré comme une pratique recommandée. Nous le ferons tout au long de ce livre. Notez que, par convention, nous faisons toujours référence aux classes qui étendent AppCompatActivity en tant qu'activités.

Le Listing 2-1 montre le code squelette pour une activité; notez qu'il étend AppCompatActivity et remplace la méthode onCreate.

package com.professionalandroid.apps.helloworld;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle; public class MainActivity extends AppCompatActivity {

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);    

   setContentView(R.layout.activity_main);

  }

}

Les composants visuels d’Activités sont appelés Vues, ​​qui sont similaires aux contrôles ou aux widgets d’un développement Web et de bureau traditionnel. Le modèle Hello World créé par l'Assistant remplace la méthode onCreate pour appeler setContentView, qui affiche l'interface utilisateur en gonflant une ressource de présentation, comme indiqué en gras dans le fragment de code suivant:

@Override

protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);  

setContentView(R.layout.activity_main); }

Les ressources d'un projet Android sont stockées dans le dossier res de la hiérarchie de votre projet, qui comprend la mise en forme, les valeurs, les sous-dossiers pouvant être dessinés et mipmap. Android Studio interprète ces ressources et leur fournit un accès dès la conception via la variable R.

Le Listing 2-2 montre la disposition de l’interface utilisateur définie dans le fichier activity_main.xml, créée par le modèle de projet Android et stockée dans le dossier res / layout du projet.

< ?xml version="1.0" encoding="utf-8"? >

< android.support.constraint.ConstraintLayout

  xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:app="http://schemas.android.com/apk/res-auto"   xmlns:tools="http://schemas.android.com/tools"

  android:layout_width="match_parent"   android:layout_height="match_parent"

  tools:context="com.professionalandroid.apps.myapplication.MainActivity">

  <TextView

    android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="Hello World!"

    app:layout_constraintBottom_toBottomOf="parent"     app:layout_constraintLeft_toLeftOf="parent"     app:layout_constraintRight_toRightOf="parent"     app:layout_constraintTop_toTopOf="parent"/> < /android.support.constraint.ConstraintLayout >

Remarque

La disposition spécifique créée dans le cadre de l'Assistant de projet Android peut changer au fil du temps. Votre disposition peut donc sembler légèrement différente du XML présenté ici, bien que l'interface utilisateur résultante soit très similaire.

Définir votre interface utilisateur au format XML et le gonfler est le moyen préféré d'implémenter vos interfaces utilisateur (UI), car il dissocie parfaitement la logique de votre application et votre conception d'interface utilisateur. 

Pour avoir accès à vos éléments d'interface utilisateur dans le code, vous pouvez leur ajouter des attributs d'identificateur dans la définition XML: <TextView  android: id = "@ + id / myTextView" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Bonjour le monde!"  app: layout_constraintBottom_toBottomOf = "parent" app: layout_constraintLeft_toLeftOf = "parent" app: layout_constraintRight_toRightOf = "parent" app: layout_constraintTop_toTopOf = "parent" /> Vous pouvez ensuite utiliser la méthode findViewById pour renvoyer une référence à chaque élément nommé au moment de l'exécution: TextView myTextView = findViewById (R.id.myTextView); Alternativement (bien que ce ne soit généralement pas considéré comme une bonne pratique), vous pouvez créer votre mise en page directement dans le code.

public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);

  RelativeLayout.LayoutParams lp;

  lp = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,                        LinearLayout.LayoutParams.MATCH_PARENT) ;

  RelativeLayout.LayoutParams textViewLP; 

textViewLP = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT) ;

  Resources res = getResources();

  int hpad = res.getDimensionPixelSize(R.dimen.activity_horizontal_margin) ;  

 int vpad = res.getDimensionPixelSize(R.dimen.activity_vertical_margin) ;

  RelativeLayout rl = new RelativeLayout(this);  

rl.setPadding(hpad, vpad, hpad, vpad);

  TextView myTextView = new TextView(this);  

myTextView.setText("Hello World!");

 rl.addView(myTextView, textViewLP);

  addContentView(rl, lp); }

Notez que toutes les propriétés disponibles dans le code peuvent également être définies avec des attributs dans la présentation XML. Plus généralement, garder la conception visuelle découplée du code de l'application permet de garder le code concis. Avec Android disponible sur des centaines d'appareils différents de différentes tailles d'écran, la définition de vos présentations en tant que ressources XML facilite l'inclusion de plusieurs dispositions optimisées pour différents écrans.Vous apprendrez à construire votre interface utilisateur en créant des modèles et en créant vos propres vues personnalisées au chapitre 5, "Création d'interfaces utilisateur".

Ouvrir des exemples de projets Android

Android comprend un certain nombre de projets exemples bien documentés qui constituent une excellente source pour des exemples complets et fonctionnels d'applications écrites pour Android. Lorsque vous avez fini de configurer votre environnement de développement, il est utile d’en parcourir quelques-uns.Les exemples de projets Android sont stockés sur GitHub et Android Studio fournit un mécanisme simple pour les cloner. 

1. Dans Android Studio, sélectionnez Fichier - Nouveau - Importer un échantillon… pour ouvrir l’assistant d’importation d’échantillon, comme illustré à la Figure 2-17. Vous pouvez également sélectionner «Importer un échantillon de code Android» dans l'Assistant Bienvenue dans Android Studio si aucun projet n'est actuellement ouvert.

 Les ressources d'un projet Android

 

2. Sélectionnez l'échantillon que vous souhaitez importer et cliquez sur Suivant.

3. Spécifiez un nom d'application et un emplacement sur votre ordinateur hôte, puis cliquez sur Terminer pour télécharger et ouvrir l'exemple. Le projet exemple sélectionné sera cloné à partir de GitHub et ouvert en tant que nouveau projet Android Studio.