Android : Structure et Fonctionnement

L'architecture et le fonctionnement des applications Android Native ressemblent beaucoup une application HTML+JavaScript :

  1. Exemple :écrire un programme JavaScript qui permet à un utilisateur de se connecter en donnant son login et son mot de passe puis on affiche :bienvenue si le login et le mot de passe sont correctes sinon on affiche Erreur de connexion

La solution : En JavaScript est divisée en deux parties

  1. 1. Interface graphique :HTML et CSS
  2. 2. Fonction JavaScript qui contient les traitements
├─Solution (JavaScript)
│ ├─ Formulaire:HTML et Css
│ │ ├─ <input type="text" id="login" />
│ │ ├─ <input type="text" id="password" />
│ │ ├─ <input type="button" onclick="connexion()" />
│ ├─ JavaScript :Fonction connexion
│ │ ├─ var nom=document.getElementById("login").value
│ │ ├─ var password=document.getElementById("password").value
│ │ ├─ if(....){}
│ │ ├─ .....

La solution : En Android est divisée en deux parties

  1. 1.Partie: interface graphique (layout) :XML
  2. 2.Partie Java :Activity
├─Solution (Android)
│ ├─ Layout:activity-main.xml
│ │ ├─ <EditText android:id="@+id/login"/>
│ │ ├─ <EditText android:id="@+id/password"/>
│ │ ├─ <Button android:id="@+id/buttonConnexion"/>
│ ├─ Java :MainActivity.java
│ │ ├─ String nom=findViewById(R.id.login).getText()
│ │ ├─ String password=findViewById(R.id.password).getText()
│ │ ├─ connexion()
│ │ │ ├─ if(....){}
│ │ │ ├─ .....
Remarque :
R.id: contient toutes les id de tous les objets de l'application
R: une classe statique qui contient toutes les ressources de l'application

A.La partie Java (MainActivity.java) :

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}
}

Explications

MainActivity :Le nom de la classe de type Activity
On peut créer des activity avec n'importe quelle nom
* ListAmis
* Bonjour
* Hello
onCreate :cette méthode s'exécute lorsqu'on lance l'activity
permet de
  1. -initialiser des objets et variables
  2. -écouter des événements
  3. -lier l'activity java avec layout
    en utilisant :
    setContentView(R.layout.activity_main);
    R.layout.activity_main:c'est l'emplacement du layout activity_main qui se trouve dans le dossier res/layout
    R:c'est une classe Statique qui contient toutes les ressources de l'application les ressources comme :
  4. -les images
  5. -les audios
  6. -les vidéos
  7. -les layouts
  8. -icons
  9. -les styles

La solution de l'exercice :1.partie Layout (main_activity.xml) :

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFC107"
android:orientation="vertical"
android:padding="12dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Votre Login"
android:id="@+id/login"
android:textSize="24dp"
android:background="#fff"
android:layout_marginBottom="12dp"
/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Votre password"
android:id="@+id/password"
android:textSize="24dp"
android:inputType="textPassword"
android:background="#fff"
android:layout_marginBottom="12dp"/>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Connexion"
android:id="@+id/buttonConnexion"
android:textSize="24dp"
android:background="#fff"
android:layout_marginBottom="12dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:id="@+id/message"
android:textSize="24dp"
android:background="#fff"
android:layout_marginBottom="12dp"/>


</LinearLayout>

La solution de l'exercice :2.partie java (MainActivity.java) :

//************2.Java****************

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
/*View.OnClickListener :une interface qui ecoute les actions sur les boutons
* actions:click,dbclick...*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
/*1.la déclaration des objet java qui correpondent les objets graphiques utilsé*/
EditText login_input, password_input;
Button buttonConnextion;
TextView message_div;
String login = "", password = "", message = "", reponse = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*2.La liaison entre objets java et les objets graphiques */
/*R.id.login => id="@+id/login"*/
login_input = findViewById(R.id.login);
password_input = findViewById(R.id.password);
buttonConnextion = findViewById(R.id.buttonConnexion);
message_div = findViewById(R.id.message);
/*3.Ecouter les boutons*/
buttonConnextion.setOnClickListener(this);
}

/*onClick:c'est une méthode de l'interface View.OnClickListener qui permet de :
récupérer l'objet cliqué*/
@Override
public void onClick(View v) {
/*v:c'est l'objet graphique cliqué*/
/*si on clique sur le bouton buttonConnexion*/
if (buttonConnextion.getId() == v.getId()) {
/*récupérer la valeur du EditText login */
login = login_input.getText().toString();
password = password_input.getText().toString();

/*Travailler avec les variables login et password */
if (login == "" || password == "") {
reponse = "Erreur tout les champs sont obligatoires";
message_div.setTextColor(Color.RED);
} else if (login.equals("abc") && password.equals("123")) {
reponse = "Bienvenue vous êtes connecté";
message_div.setTextColor(Color.GREEN);
} else {
reponse = "Erreur login ou mot de passe incorrectes";
message_div.setTextColor(Color.RED);
}
message_div.setText(reponse);
}
}
}