SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Samir Akhrouf
Activités
Université Mohamed Boudiaf de M’Sila
Faculté des Mathématique et de l’Informatique
Département d’Informatique
Année universitaire
2019-2020
2
Composants d’une application Android
Une fois la partie statique (xml) d’une interface déclarée, il faut créer une classe
Java représentant l’activité.
3
Les Activités
❑ Les activités (Activity en anglais) font partie des objets les plus utilisés.
❑ Chaque écran que voit et manipule l’utilisateur est implémenté par une classe qui
hérite de la classe Activity.
❑ Une application comporte au minimum une classe héritant de Activity.
❑ Une et une seule activité est lancée au démarrage d’une application.
❑ Chaque activité, pour être lancée, doit être déclarée dans le fichier Manifest.xml,
dans une balise <activity>, balise enfant de la balise <application>.
balise <activity>
balise enfant de la
Balise <application>
4
❑ Pour indiquer au système quelle activité lancer au démarrage de
l’application, il faut ajouter
❑ une balise <intent-filter>, qui elle-même doit contenir les balises
<action> et <category>.
❑ La classe Activity fait partie du package Android.app.
❑ Le point d’entrée d’une classe héritant d’Activity est la méthode onCreate :
❑ première méthode appelée à la création de l’activité,
❑ c’est ici que le développeur doit faire les initialisations dont il a besoin.
❑ La méthode onCreate de la classe héritant d’Activity doit appeler la
méthode onCreate de la classe parente.
Cette classe doit :
❑ hériter de la classe Activity.
❑ Surcharger au minimum la méthode onCreate.
❑ Lier l’activité à l’interface à l'aide de la méthode setContentView.
Pour créer une nouvelle activité, faites un clic droit sur le dossier src de votre
projet, puis sélectionnez l’option New - Activity et choisissez le type d’activité
que vous voulez créer (Blank Activity, Login Activity, etc.).
Prenons l'exemple d'une interface créée dans le fichier home.xml.
Pour pouvoir la lier à une activité, la méthode onCreate doit contenir au
minimum le code suivant :
5
On peut spécifier des propriétés ou comportements à l'aide des filtres d'intention.
Les filtres d'intention se divisent en plusieurs catégories :
❑ Les actions (balise action) : qui permettent de spécifier des actions à un
composant, par exemple : ACTION_CALL (pour passer un appel
téléphonique), ACTION_MAIN (activité principale de l'application),
ACTION_SEND (utilisé pour le partage de données), etc.
❑ Les données (balise data) : permettent de spécifier le type de données
traité par le composant.
6
❑ Les catégories (balise category) : permettent de spécifier la catégorie du
composant, par exemple CATEGORY_BROWSABLE (peut être invoqué par le
navigateur pour afficher des données), CATEGORY_LAUNCHER (l'activité sera
disponible depuis le lanceur d'application), etc.
❑ Les extras : représente des données additionnelles qui seront fournies à
l'activité. Par exemple, pour l’envoi d’un e-mail, utiliser la clé EXTRA_EMAIL
pour spécifier le destinataire du mail.
❑ Différents flags utiles à l'activité.
Par exemple:
7
3. Les layouts
Les layouts facilitent l'organisation des différents éléments qui composent une
interface. Ils servent de conteneur aux composantes d’une vue. Tous les layouts
Android héritent de la classe ViewGroup.
2.1 FrameLayout
Le Framelayout est le conteneur le plus simple, il représente un espace qui affiche
l’objet de votre choix.
Un élément ajouté à un FrameLayout se positionne en haut à gauche du layout.
Vous pouvez changer cette position à l’aide de l’attribut android:gravity.
2.2 LinearLayout
Le LinearLayout permet d'aligner des éléments (dans l’ordre des déclarations) dans
une direction (verticale ou horizontale).
Vous pouvez définir les attributs suivants :
❑ L'orientation du layout.
❑ La gravité des éléments.
❑ Le poids des éléments.
Orientation
À la création d’un LinearLayout, vous devez préciser son orientation (horizontale ou
verticale) à l'aide de l'attribut android:orientation.
8
Positionnement d’un élément
Pour définir le positionnement d'un élément dans un LinearLayout, deux
attributs sont disponibles :
❑ layout_gravity : spécifie le positionnement d'un élément dans son
conteneur.
❑ gravity : spécifie le positionnement du contenu d'un élément (par
exemple, on peut spécifier la position d'un texte dans un bouton).
Cycle de vie d’une activité
o onCreate() – Appelé lors de la création de l'activité
o onStart() – Appelé juste après sa création ou par la méthode de redémarrage
o onStop() – Ici l'activité commence à devenir visible pour l'utilisateur
o onResume() – Appelé lorsque l'activité est visible par l'utilisateur et que
l'utilisateur peut interagir avec elle
o onPause() – Appelé lorsque le contenu de l'activité n'est pas visible car
l'utilisateur reprend l’activité précédente
o onStop() – Appelé lorsque l'activité n'est pas visible pour l'utilisateur car
une autre activité à pris sa place
o onRestart() – Appelé lorsque l'utilisateur vient à l'écran ou reprend l'activité
qui a été arrêté
o onDestroy – Appelé lorsque l'activité n'est pas en arrière-plan
9
Le diagramme ci-dessous montre les différents états du cycle de
vie des activités :
10
Création d’une activité
1. Créer une classe héritant de la classe Activity ou (AppCompatActivity)
de la plateforme.
3. Déclarer l’activité dans le fichier manifest de l’application.
2. Implémenter le callback: onCreate
4. Affecter le layout à l’activité en appelant setContenteView(…)
public class MainActivity extends AppCompatActivity {
EditText user, pwd;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
. . .
user = (EditText) findViewById(R.id.userEdit);
pwd = (EditText)findViewById(R.id.pwdEdit);
}
}
11
Déclaration de l’activité dans le Fichier manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
package="com.mad.f_belhadj.tp3_2019">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".secondActivity"></activity>
</application>
12
Intent filter
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
*
</intent-filter>
Lancement d’une activité par programme
Intent intent = new Intent(context, secondActivity.class);
intent.putExtra(. . . ); // passage de données
startActivity(intent);
// finish();
Intent intent = new Intent(context, secondActivity.class);
intent.putExtra(. . . ); // passage de données
startActivity(intent);
// finish();
13
Lancement d’une activité et attente de résultats
private static final int ACTIVITY_FLAG = 1;
Intent intent = new Intent(this, secondActivity.class);
startActivityForResult(intent, APPEL_ACTIV2);
Fenêtre appelante
@Override
protected void onActivityResult( int requestCode, int
resultCode, Intent data)
{
if (resultCode == Activity.RESULT_CANCELED) return;
switch (requestCode) {
case ACTIVITY_FLAG : // on revient de Activ2
...
}
}
Lancer une activité et attendre un retour
Surcharger ce callback et
sélectionner un cas de retour selon
le flag retourné
14
Fenêtre appelée
...
setResult(RESULT_OK);
finish();
Retorurner un flag pour indiquer
un résulat à récupérer dans le
callback onActivityResult de
l’activité appelante
Terminer l’activité
15
Communication d’informations dans un Intent
Bundle infos = new Bundle(); // key-value data structure
infos.putString("USER",user.getText().toString());
Intent intent = new Intent(MainActivity.this,
secondActivity.class);
intent.putExtra("BUNDLE", infos);
startActivity(intent);
Passage d’infos
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("BUNDLE");
String user = bundle.getString("USER");
Récupération d’infos
16
Cycle de vie d’une Activité : Events
onCreate : Appelée à la première création d’une activité.
Dans cet évènement on devrait :
✓ Créer tous les views (controles)
✓ Ouvrir/se connecter à des BDD ou serveurs, …
public class secondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
EditText passEdit = (EditText) findViewById(R.id.passEdit);
passEdit.getLayoutParams().width =
LinearLayout.LayoutParams.MATCH_PARENT;
}
}
17
onStart: Appelée juste avant que l’activité devienne visible.
• Après onStart, si l’activité devient visible, le contrôle est
transféré à onResume; sinon il est transféré à onStop.
@Override
protected void onStart() {
super.onStart();
…
}
onResume: Appelée juste après que l’activité ne devienne visible.
A ce moment l’utilisateur peut interagir avec l’activité.
Il peut aussi être appelé quand la vue redevient active.
Le code dans onResume doit permettre de continuer l’exécution
à l’état suspendu.
18
@Override
protected void onResume() {
super.onResume();
…
}
onPause: Appelée avant que le contrôle soit donné à une autre activité.
❑ Le code dans onResume doit annuler/suspendre toute action
consommant le CPU et la batterie. Enregistrer tous qui doit
être enregistré.
@Override
protected void onPause() {
super.onPause();
…
}
19
onStop: Appelée quant l’activité est définitivement invisible ou elle est
entrain d’être détruite.
@Override
protected void onStop() {
super.onStop();
…
}
onDestroy: la dernière chance à l’activité de faire quelques traitements
avant qu’elle soit définitivement détruite..
@Override
protected void onDestroy() {
super.onDestroy();
…
}
20
Android Services
❑ Un service n’a pas d’interface graphique
❑ Une autre application peut lancer un service ou se connecter à un
en cours d’exécution.
❑ Un service est un type d’application permettant d'effectuer une
tâche plus ou moins longue en arrière plan.
❑ Exemple: se connecter à
un serveur, lancer l’audio,
etc. …
Cycle de vie
d’un service
21
Implémentation d’un service
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//TODO do something useful
return Service.START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
//TODO for communication return IBinder implementation
return null;
}
}
22
Modifications à apporter au fichier manifest
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
...
<service
android:name=".RSSPullService"
android:exported="false"/>
...
</application>

Contenu connexe

Similaire à Les Activités.pdf

Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursLilia Sfaxi
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
In01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIIn01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIYann Caron
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1Sem Koto
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1Sem Koto
 
chapitre-2-les-activites.pdf
chapitre-2-les-activites.pdfchapitre-2-les-activites.pdf
chapitre-2-les-activites.pdfolfaharrabi2
 
chapitre-2-les-activites.pdf
chapitre-2-les-activites.pdfchapitre-2-les-activites.pdf
chapitre-2-les-activites.pdfferiel53
 
react-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basicreact-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basiczineblahib2
 
Alphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentauxAlphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentauxAlphorm
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2dhugomallet
 
Cours JavaScript 2.ppt
Cours JavaScript 2.pptCours JavaScript 2.ppt
Cours JavaScript 2.pptPROFPROF11
 
FORMATION javascript.pdf
FORMATION javascript.pdfFORMATION javascript.pdf
FORMATION javascript.pdfOualidBelbrik
 

Similaire à Les Activités.pdf (20)

Android2017 cours2
Android2017 cours2Android2017 cours2
Android2017 cours2
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
Atelier18
Atelier18 Atelier18
Atelier18
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
My droid
My droidMy droid
My droid
 
In01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIIn01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMI
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1
 
chapitre-2-les-activites.pdf
chapitre-2-les-activites.pdfchapitre-2-les-activites.pdf
chapitre-2-les-activites.pdf
 
chapitre-2-les-activites.pdf
chapitre-2-les-activites.pdfchapitre-2-les-activites.pdf
chapitre-2-les-activites.pdf
 
react-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basicreact-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basic
 
Rapport tp3 j2ee
Rapport tp3 j2eeRapport tp3 j2ee
Rapport tp3 j2ee
 
Chapitre 5 android
Chapitre 5 androidChapitre 5 android
Chapitre 5 android
 
Alphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentauxAlphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentaux
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2d
 
Manualjquery
ManualjqueryManualjquery
Manualjquery
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Cours JavaScript 2.ppt
Cours JavaScript 2.pptCours JavaScript 2.ppt
Cours JavaScript 2.ppt
 
FORMATION javascript.pdf
FORMATION javascript.pdfFORMATION javascript.pdf
FORMATION javascript.pdf
 

Plus de RihabBENLAMINE

presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfRihabBENLAMINE
 
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdfTutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdfRihabBENLAMINE
 
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdfCM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdfRihabBENLAMINE
 
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdfRihabBENLAMINE
 
coursphp-chap3-230321082859-121d6678.pptx
coursphp-chap3-230321082859-121d6678.pptxcoursphp-chap3-230321082859-121d6678.pptx
coursphp-chap3-230321082859-121d6678.pptxRihabBENLAMINE
 
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfCours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfRihabBENLAMINE
 
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdfVirtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdfRihabBENLAMINE
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdfRihabBENLAMINE
 
Interace Utilisateur.pdf
Interace Utilisateur.pdfInterace Utilisateur.pdf
Interace Utilisateur.pdfRihabBENLAMINE
 
Bases de données sous Android.pdf
Bases de données sous Android.pdfBases de données sous Android.pdf
Bases de données sous Android.pdfRihabBENLAMINE
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdfRihabBENLAMINE
 
coursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdfcoursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdfRihabBENLAMINE
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdfRihabBENLAMINE
 
introAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdfintroAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdfRihabBENLAMINE
 
016834638650_suitechap1.pptx
016834638650_suitechap1.pptx016834638650_suitechap1.pptx
016834638650_suitechap1.pptxRihabBENLAMINE
 
Chapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdfChapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdfRihabBENLAMINE
 
p01b_portelogique_boole.pdf
p01b_portelogique_boole.pdfp01b_portelogique_boole.pdf
p01b_portelogique_boole.pdfRihabBENLAMINE
 

Plus de RihabBENLAMINE (20)

presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
 
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdfTutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
 
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdfCM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
 
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
 
coursphp-chap3-230321082859-121d6678.pptx
coursphp-chap3-230321082859-121d6678.pptxcoursphp-chap3-230321082859-121d6678.pptx
coursphp-chap3-230321082859-121d6678.pptx
 
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfCours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
 
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdfVirtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf
 
Interace Utilisateur.pdf
Interace Utilisateur.pdfInterace Utilisateur.pdf
Interace Utilisateur.pdf
 
Firebase.pdf
Firebase.pdfFirebase.pdf
Firebase.pdf
 
Bases de données sous Android.pdf
Bases de données sous Android.pdfBases de données sous Android.pdf
Bases de données sous Android.pdf
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdf
 
coursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdfcoursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdf
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf
 
introAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdfintroAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdf
 
016834638650_suitechap1.pptx
016834638650_suitechap1.pptx016834638650_suitechap1.pptx
016834638650_suitechap1.pptx
 
PHP_intro.pdf
PHP_intro.pdfPHP_intro.pdf
PHP_intro.pdf
 
Chapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdfChapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdf
 
chapitre-2.pptx.pdf
chapitre-2.pptx.pdfchapitre-2.pptx.pdf
chapitre-2.pptx.pdf
 
p01b_portelogique_boole.pdf
p01b_portelogique_boole.pdfp01b_portelogique_boole.pdf
p01b_portelogique_boole.pdf
 

Les Activités.pdf

  • 1. Samir Akhrouf Activités Université Mohamed Boudiaf de M’Sila Faculté des Mathématique et de l’Informatique Département d’Informatique Année universitaire 2019-2020
  • 2. 2 Composants d’une application Android Une fois la partie statique (xml) d’une interface déclarée, il faut créer une classe Java représentant l’activité.
  • 3. 3 Les Activités ❑ Les activités (Activity en anglais) font partie des objets les plus utilisés. ❑ Chaque écran que voit et manipule l’utilisateur est implémenté par une classe qui hérite de la classe Activity. ❑ Une application comporte au minimum une classe héritant de Activity. ❑ Une et une seule activité est lancée au démarrage d’une application. ❑ Chaque activité, pour être lancée, doit être déclarée dans le fichier Manifest.xml, dans une balise <activity>, balise enfant de la balise <application>. balise <activity> balise enfant de la Balise <application>
  • 4. 4 ❑ Pour indiquer au système quelle activité lancer au démarrage de l’application, il faut ajouter ❑ une balise <intent-filter>, qui elle-même doit contenir les balises <action> et <category>. ❑ La classe Activity fait partie du package Android.app. ❑ Le point d’entrée d’une classe héritant d’Activity est la méthode onCreate : ❑ première méthode appelée à la création de l’activité, ❑ c’est ici que le développeur doit faire les initialisations dont il a besoin. ❑ La méthode onCreate de la classe héritant d’Activity doit appeler la méthode onCreate de la classe parente. Cette classe doit : ❑ hériter de la classe Activity. ❑ Surcharger au minimum la méthode onCreate. ❑ Lier l’activité à l’interface à l'aide de la méthode setContentView. Pour créer une nouvelle activité, faites un clic droit sur le dossier src de votre projet, puis sélectionnez l’option New - Activity et choisissez le type d’activité que vous voulez créer (Blank Activity, Login Activity, etc.). Prenons l'exemple d'une interface créée dans le fichier home.xml. Pour pouvoir la lier à une activité, la méthode onCreate doit contenir au minimum le code suivant :
  • 5. 5 On peut spécifier des propriétés ou comportements à l'aide des filtres d'intention. Les filtres d'intention se divisent en plusieurs catégories : ❑ Les actions (balise action) : qui permettent de spécifier des actions à un composant, par exemple : ACTION_CALL (pour passer un appel téléphonique), ACTION_MAIN (activité principale de l'application), ACTION_SEND (utilisé pour le partage de données), etc. ❑ Les données (balise data) : permettent de spécifier le type de données traité par le composant.
  • 6. 6 ❑ Les catégories (balise category) : permettent de spécifier la catégorie du composant, par exemple CATEGORY_BROWSABLE (peut être invoqué par le navigateur pour afficher des données), CATEGORY_LAUNCHER (l'activité sera disponible depuis le lanceur d'application), etc. ❑ Les extras : représente des données additionnelles qui seront fournies à l'activité. Par exemple, pour l’envoi d’un e-mail, utiliser la clé EXTRA_EMAIL pour spécifier le destinataire du mail. ❑ Différents flags utiles à l'activité. Par exemple:
  • 7. 7 3. Les layouts Les layouts facilitent l'organisation des différents éléments qui composent une interface. Ils servent de conteneur aux composantes d’une vue. Tous les layouts Android héritent de la classe ViewGroup. 2.1 FrameLayout Le Framelayout est le conteneur le plus simple, il représente un espace qui affiche l’objet de votre choix. Un élément ajouté à un FrameLayout se positionne en haut à gauche du layout. Vous pouvez changer cette position à l’aide de l’attribut android:gravity. 2.2 LinearLayout Le LinearLayout permet d'aligner des éléments (dans l’ordre des déclarations) dans une direction (verticale ou horizontale). Vous pouvez définir les attributs suivants : ❑ L'orientation du layout. ❑ La gravité des éléments. ❑ Le poids des éléments. Orientation À la création d’un LinearLayout, vous devez préciser son orientation (horizontale ou verticale) à l'aide de l'attribut android:orientation.
  • 8. 8 Positionnement d’un élément Pour définir le positionnement d'un élément dans un LinearLayout, deux attributs sont disponibles : ❑ layout_gravity : spécifie le positionnement d'un élément dans son conteneur. ❑ gravity : spécifie le positionnement du contenu d'un élément (par exemple, on peut spécifier la position d'un texte dans un bouton). Cycle de vie d’une activité o onCreate() – Appelé lors de la création de l'activité o onStart() – Appelé juste après sa création ou par la méthode de redémarrage o onStop() – Ici l'activité commence à devenir visible pour l'utilisateur o onResume() – Appelé lorsque l'activité est visible par l'utilisateur et que l'utilisateur peut interagir avec elle o onPause() – Appelé lorsque le contenu de l'activité n'est pas visible car l'utilisateur reprend l’activité précédente o onStop() – Appelé lorsque l'activité n'est pas visible pour l'utilisateur car une autre activité à pris sa place o onRestart() – Appelé lorsque l'utilisateur vient à l'écran ou reprend l'activité qui a été arrêté o onDestroy – Appelé lorsque l'activité n'est pas en arrière-plan
  • 9. 9 Le diagramme ci-dessous montre les différents états du cycle de vie des activités :
  • 10. 10 Création d’une activité 1. Créer une classe héritant de la classe Activity ou (AppCompatActivity) de la plateforme. 3. Déclarer l’activité dans le fichier manifest de l’application. 2. Implémenter le callback: onCreate 4. Affecter le layout à l’activité en appelant setContenteView(…) public class MainActivity extends AppCompatActivity { EditText user, pwd; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); . . . user = (EditText) findViewById(R.id.userEdit); pwd = (EditText)findViewById(R.id.pwdEdit); } }
  • 11. 11 Déclaration de l’activité dans le Fichier manifest <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=http://schemas.android.com/apk/res/android package="com.mad.f_belhadj.tp3_2019"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".secondActivity"></activity> </application>
  • 12. 12 Intent filter <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> * </intent-filter> Lancement d’une activité par programme Intent intent = new Intent(context, secondActivity.class); intent.putExtra(. . . ); // passage de données startActivity(intent); // finish(); Intent intent = new Intent(context, secondActivity.class); intent.putExtra(. . . ); // passage de données startActivity(intent); // finish();
  • 13. 13 Lancement d’une activité et attente de résultats private static final int ACTIVITY_FLAG = 1; Intent intent = new Intent(this, secondActivity.class); startActivityForResult(intent, APPEL_ACTIV2); Fenêtre appelante @Override protected void onActivityResult( int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_CANCELED) return; switch (requestCode) { case ACTIVITY_FLAG : // on revient de Activ2 ... } } Lancer une activité et attendre un retour Surcharger ce callback et sélectionner un cas de retour selon le flag retourné
  • 14. 14 Fenêtre appelée ... setResult(RESULT_OK); finish(); Retorurner un flag pour indiquer un résulat à récupérer dans le callback onActivityResult de l’activité appelante Terminer l’activité
  • 15. 15 Communication d’informations dans un Intent Bundle infos = new Bundle(); // key-value data structure infos.putString("USER",user.getText().toString()); Intent intent = new Intent(MainActivity.this, secondActivity.class); intent.putExtra("BUNDLE", infos); startActivity(intent); Passage d’infos Intent intent = getIntent(); Bundle bundle = intent.getBundleExtra("BUNDLE"); String user = bundle.getString("USER"); Récupération d’infos
  • 16. 16 Cycle de vie d’une Activité : Events onCreate : Appelée à la première création d’une activité. Dans cet évènement on devrait : ✓ Créer tous les views (controles) ✓ Ouvrir/se connecter à des BDD ou serveurs, … public class secondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); EditText passEdit = (EditText) findViewById(R.id.passEdit); passEdit.getLayoutParams().width = LinearLayout.LayoutParams.MATCH_PARENT; } }
  • 17. 17 onStart: Appelée juste avant que l’activité devienne visible. • Après onStart, si l’activité devient visible, le contrôle est transféré à onResume; sinon il est transféré à onStop. @Override protected void onStart() { super.onStart(); … } onResume: Appelée juste après que l’activité ne devienne visible. A ce moment l’utilisateur peut interagir avec l’activité. Il peut aussi être appelé quand la vue redevient active. Le code dans onResume doit permettre de continuer l’exécution à l’état suspendu.
  • 18. 18 @Override protected void onResume() { super.onResume(); … } onPause: Appelée avant que le contrôle soit donné à une autre activité. ❑ Le code dans onResume doit annuler/suspendre toute action consommant le CPU et la batterie. Enregistrer tous qui doit être enregistré. @Override protected void onPause() { super.onPause(); … }
  • 19. 19 onStop: Appelée quant l’activité est définitivement invisible ou elle est entrain d’être détruite. @Override protected void onStop() { super.onStop(); … } onDestroy: la dernière chance à l’activité de faire quelques traitements avant qu’elle soit définitivement détruite.. @Override protected void onDestroy() { super.onDestroy(); … }
  • 20. 20 Android Services ❑ Un service n’a pas d’interface graphique ❑ Une autre application peut lancer un service ou se connecter à un en cours d’exécution. ❑ Un service est un type d’application permettant d'effectuer une tâche plus ou moins longue en arrière plan. ❑ Exemple: se connecter à un serveur, lancer l’audio, etc. … Cycle de vie d’un service
  • 21. 21 Implémentation d’un service public class MyService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { //TODO do something useful return Service.START_NOT_STICKY; } @Override public IBinder onBind(Intent intent) { //TODO for communication return IBinder implementation return null; } }
  • 22. 22 Modifications à apporter au fichier manifest <application android:icon="@drawable/icon" android:label="@string/app_name"> ... <service android:name=".RSSPullService" android:exported="false"/> ... </application>