Android TP1 – 2018
Nous allons créer une première application, dont le but est de convertir des nombres entiers en binaire.
Partie 1
1. Créer un layout avec l’assistant graphique

Indication : Le layout ci-dessus est formé d’un LinearLayout vertical, contenant :
- un LinearLayout horizontal, contenant lui-même :
- une étiquette (TextView),
- et un champ de saisie EditText ;
- un Button,
- et un second LinearLayout horizontal, contenant aussi une étiquette et un champ de saisie.
On pourra aussi (dans l’éditeur graphique), utiliser un champ de saisie qui n’accepte que les nombres.
2. Créer les objets correspondants et les associer aux éléments du layout
import android.widget.Button;
public class MainActivity extends Activity {
private Button bGO;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bGO = (Button) this.findViewById(R.id.button1);
}
NB : Attention à bien importer la classe Button du package android.widget (voir la première ligne du code ci-dessus).
On trouvera l’ID du bouton dans le fichier XML “layout”.
<Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button" />
3. La classe Activity implémente l’interface de manipulation
import android.view.View.OnClickListener;
public class MainActivity extends Activity
implements OnClickListener {
//...
@Override
public void onClick(View v) {
// ...
}
NB : Attention à bien importer l’interface OnClickListener du package android.widget.View
4. Associer les objets widgets à leur interface de manipulation
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bGO = (Button) this.findViewById(R.id.button1);
bGO.setOnClickListener(this);
}
5. Implémenter les méthodes de manipulation
import android.widget.Toast;
//...
@Override
public void onClick(View v) {
if (v.getId()==R.id.button1)
Toast.makeText(getApplicationContext(),
"Conversion !",
Toast.LENGTH_SHORT).show();
}
6. Récupérer une valeur dans un champ de texte
On associe l’objet EditText avec son champ de saisie, en utilisant l’ID.
import android.widget.EditText;
public class MainActivity extends Activity
implements OnClickListener {
//...
private EditText tfDecimal, tfBinaire;
public void onCreate(Bundle savedInstanceState) {
//..
tfDecimal=(EditText) this.findViewById(R.id.editText1);
}
String chDecimal=tfDecimal.getText().toString(); int d=Integer.parseInt(chDecimal);
7. Écrire dans un champ de texte
Ne pas oublier d’associer l’objet EditText avec son champ de saisie, en utilisant l’ID comme précédemment.
tfBinaire.setText(""+convertInBinary(d));
Rappel : Conversion en binaire
(voir TD intensifs)
tantque n>0 faire
si n%2=0 alors
bin = "0" + bin
sinon
bin = "1" + bin
finsi
n=n/2
fait
Partie 2
1. Ajouter un second bouton
On souhaite ajouter un second bouton pour faire la conversion inverse. Que va-t-il se passer ?
2. Différencier le traitement des différents boutons
Pour différentier le bouton qui a déclenché un événement, on utilise la méthode getId() de l’objet View passé en argument de onClick (ce view est en fait l’objet qui a déclenché l’action, c’est à dire l’objet sur lequel on a cliqué).
public void onClick(View view) {
if (view.getId()==R.id.bBIN) {
// Traitement du bouton d'ID "bBIN"
}
// etc... traiter les autres cas (autres boutons)
}
3. Terminer l’interface

- ajouter le second bouton pour convertir de binaire à décimal
- puis ajouter un bouton pour effacer les 2 champs
Rappel : convertir de binaire en décimal
On suppose que bin est une chaine en binaire
d <- 0 x <- 1 i <-longueur(bin) tantque i>0 faire i <- i-1 if bin[i] = '1' alors d=d+x finsi x <- x*2 fait
ou alors, plus simplement en java :
int dec=parseInt(bin, 2)
Partie 3
- Remplacez toutes les chaînes de caractères en dur dans votre appli par des références à des chaines situées dans le fichier strings.xml
- Localisez votre appli en français, anglais et si possible une autre langue (que vous connaissez)
- Testez votre appli en changeant la langue de votre machine virtuelle