SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Université Constantine 2
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
– Cours 7 –
Chapitre 5 : Structure d’un projet Android (2/2)
Développement d’applications mobiles
2018/2019. Semestre 1
Université Constantine 2
Etudiants concernés
Faculté/Institut Département Niveau Spécialité
2018/2019. Semestre 1
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
Développement d’applications mobiles
Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA
Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA
– Cours 7 –
Chapitre 5 : Structure d’un projet Android (2/2)
Université Constantine 2 3
Prérequis
Maîtrise de Android Studio
Assimilation de la structure d’un projet Android
Objectifs du cours
Gérer les ressources en fonction du matériel
Internationaliser son application Android
Résumé
© Dr. Chaouche A.-C.
Université Constantine 2 4
Taille des écrans : 1 inch = 2,54 cm
small, normal, large, xlarge
Densité : DPI (Dot Per Inch)
ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi
Taille et densité des écrans
© Dr. Chaouche A.-C.
Université Constantine 2 5
Density independant Pixel (dp)
dp = px / (dpi / 160)
Taille et densité des écrans
Indépendance de la densité
© Dr. Chaouche A.-C.
Dépendance de densité (px)
Indépendance de densité (dp)
Université Constantine 2 6
Taille et densité des écrans
Distribution
© Dr. Chaouche A.-C.
ldpi mdpi tvdpi hdpi xhdpi xxhdpi Total
Small 0.4 % 0.1 % 0.5 %
Normal 0.8 % 0.3 % 25.4 % 41.2 % 24.4 % 92.1 %
Large 2.4 % 1.4 % 0.3 % 0.5 % 4.9 %
Xlarge 1.6 % 0.5 % 0.4 % 2.5 %
Total 0.4 % 4.8 % 1.7 % 26.2 % 41.9 % 25.0 % 100 %
Source : Google Play Store, 31 Août 2018
Université Constantine 2 7
Vue portrait vs. vue paysage
© Dr. Chaouche A.-C.
Université Constantine 2 8
Il est possible de personnaliser les ressources, en fonction de :
En utilisant des qualificateurs : par exemple :
Par défaut : layout : layouts par défaut
Orientation : layout-land : versions paysagedes layouts
Densité : mipmap-xxhdpi : icônes pour des écrans de densité xxhdpi
Taille : layout-large : layouts pour des écrans de taille large
Langue : values-ar/strings.xml : chaînes de caractères en arabe
...
Prise en charge des différentes configurations
© Dr. Chaouche A.-C.
Université Constantine 2 9
Images matricielles :
drawable-ldpi/graphic.png 36 x 36 (0.75x)
drawable-mdpi/graphic.png 48 x 48 (1.0x baseline)
drawable-hdpi/graphic.png 72 x 72 (1.5x)
drawable-xhdpi/graphic.png 96 x 96 (2.0x)
drawable-xxhdpi/graphic.png 144 x 144 (3.0x)
drawable-xxxhdpi/graphic.png 192 x 192 (4.0x)
→ Android Drawable Importer (Plugin) :
Installation : Settings… > Plugins > Browse repositories… >
Utilisation : res/drawable > New > Batch Drawable Import
Icônes vectorielles : (Material ou SVG)
drawable-anydpi/graphic.xml
→ Utilisation : res/drawable > New > Vector Asset
Drawables et densité de l’écran
© Dr. Chaouche A.-C.
Université Constantine 2 10
Internationalisation (1/2)
© Dr. Chaouche A.-C.
/res/values/strings.xml
<resources>
<string name="hello"> Hello </string>
...
</resources>
/res/values-ar/strings.xml
<resources>
<string name="hello"> ‫سالم‬ </string>
...
</resources>
Université Constantine 2 11
Internationalisation (2/2)
© Dr. Chaouche A.-C.
/java/LoginActivity.java
...
Locale myLocale = new Locale("ar");
DisplayMetrics dm = getResources().getDisplayMetrics();
Configuration conf = getResources().getConfiguration();
conf.locale = myLocale;
getResources().updateConfiguration(conf, dm);
...
Intent refresh = new Intent(this, LoginActivity.class);
startActivity(refresh);
finish();
...
Pour changer de langue dynamiquement (par programmation)
Université Constantine 2 12
Layouts : RelativeLayout
Attributs de RelativeLayout (1/2)
© Dr. Chaouche A.-C.
Aligner par rapport une autre vue ("@[+][package:]type:name")
android:layout_above, android:layout_below
android:layout_alignStart, android:layout_alignEnd
android:layout_alignTop, android:layout_alignBottom
android:layout_alignLeft, android:layout_alignRight
Aligner par rapport au parent ("true" ou "false")
android:layout_alignParentStart, android:layout_alignParentEnd
android:layout_alignParentTop, android:layout_alignParentBottom
android:layout_alignParentLeft, android:layout_alignParentRight
android:layout_alignWithParentIfMissing
Université Constantine 2 13
Layouts : RelativeLayout
Attributs de RelativeLayout (2/2)
© Dr. Chaouche A.-C.
Centrer par rapport au parent ("true" ou "false")
android:layout_centerHorizontal
android:layout_centerVertical
android:layout_centerInParent
Positionner par rapport à une autre vue ("@[+][package:]type:name")
android:layout_toStartOf, android:layout_toEndOf
android:layout_toLeftOf, android:layout_toRightOf
Université Constantine 2 14
Créer une activité ComplexActivity
Créer 8 Boutons
Aligner les boutons dans un RelativeLayout
Layouts : RelativeLayout
Exercice
© Dr. Chaouche A.-C.
Université Constantine 2 15
Layouts : RelativeLayout
Solution
© Dr. Chaouche A.-C.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button android:text="ONE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Button01" />
<Button android:text="TWO"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Button02"
android:layout_centerHorizontal="true" />
<Button android:text="THREE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Button03"
android:layout_alignParentRight="true" />
<Button android:text="FOUR"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Button04"
android:layout_toLeftOf="@+id/Button05"
android:layout_centerVertical="true" />
<Button android:text="FIVE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Button05"
android:layout_centerInParent="true" />
<Button android:text="SIX"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Button06"
android:layout_toRightOf="@+id/Button05"
android:layout_centerVertical="true" />
<Button android:text="SEVEN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Button07"
android:layout_above="@+id/Button08"
android:layout_centerHorizontal="true" />
<Button android:text="EIGHT"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/Button08"
android:layout_alignParentBottom="true" />
</RelativeLayout>
Université Constantine 2 16
Vue portrait vs. vue paysage
© Dr. Chaouche A.-C.
Université Constantine 2 17
Créer une version "paysage" de LoginActivity
Créer un package "layout-land"
Copier le fichier "layout_login.xml" dans "layout-land"
Modifier le code du "layout_login.xml" pour avoir l'affichage suivant
TP1b : Vue paysage de LoginActivity
© Dr. Chaouche A.-C.
Université Constantine 2 18
Documents sont accessibles :
Plateforme e-learning de l’université Constantine 2
Lien : http://elearning.univ-constantine2.dz/
Rendus du TP 1 :
Avant le Samedi 17 novembre à 23h59
À : ac.chaouche@misc-umc.org
Nom du fichier à rendre :
DAM_TP1_G%_NOMBINOME1_NOMBINOME2.zip
(Ex : DAM_TP1_G1_CHAOUCHE_NECIBI.zip)
Le fichier zip doit contenir seulement le dossier src
Documents et Rendus
© Dr. Chaouche A.-C.
Université Constantine 2 19
Configurations d’écran :
http://developer.android.com/guide/topics/resources/providing-resources.html
Drawables :
http://vogella.developpez.com/tutoriels/android/utilisation-drawable/
Android Drawable Import (Plugin) :
https://plugins.jetbrains.com/plugin/7658-android-drawable-importer
Quelques liens utiles
© Dr. Chaouche A.-C.
Université Constantine 2 20
Google Inc., «Google Play» 6 Juillet 2017. Lien : https://play.google.com.
Android Developer, «Supporting Multiple Screens». Lien :
https://developer.android.com/guide/practices/screens_support.html.
M. Seguy et Y. Bergès, Android, A Complete Course, From Basics To Enterprise
Edition, Édition Française éd., 2011, p. 279.
S. Walter, «Android script Photoshop pour exporter en ldpi, hdpi et xhdpi», 5
Janvier 2012. Lien : https://blog.stephaniewalter.fr/android-script-photoshop-
pour-exporter-en-ldpi-hdpi-et-xhdpi/.
Android Developer, «References - Android Plateform API 28 : Relative Layout».
Lien : https://developer.android.com/guide/topics/ui/layout/relative.html.
Références
© Dr. Chaouche A.-C.
Université Constantine 2 21
Chapitre 6 : Gestion des évènements et intentions
Objectifs :
Gérer les évènements d’une vues (click, key, ...)
Afficher des messages dans le Log et les Toasts
Comprendre la gestion des activités
Changer d’activité et transférer des données
Prochain chapitre
© Dr. Chaouche A.-C.
Université Constantine 2 22
Créer un ScrollView dans la racine
pour gérer le dépassement de l’écran
Améliorer les champs de texte
Supprimer le TextView
Englober le EditText dans une balise
android.support.design.widget.TextInputLayout
Rajouter l’attribut android:hint dans le EditText qui
remplace le TextView
Annexe
Améliorer l’ergonomie de la vue (1/2)
© Dr. Chaouche A.-C.
Université Constantine 2 23
Pour utiliser la vue android.support.design.widget.TextInputLayout
Ajouter les dépendances : com.android.support:design:26.+
Méthode 1 :
Project Structure > Modules > app >
Onglet Depenendencies
Méthode 2 : (dans le Gradle)
Annexe
Améliorer l’ergonomie de la vue (2/2)
© Dr. Chaouche A.-C.
/Gradle Scripts/build.gradle (Module: app)
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support:design:26.+'
}

Contenu connexe

Tendances

Tendances (20)

Applications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLiteApplications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLite
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-Eclipse
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 

Similaire à Applications Android - cours 7 : Ressources et adaptation au matériel

Chap10 : Outils de Simulation Cas des CAD 3D Concepts de base & fondements.
Chap10 : Outils de Simulation Cas des CAD 3D Concepts de base & fondements.Chap10 : Outils de Simulation Cas des CAD 3D Concepts de base & fondements.
Chap10 : Outils de Simulation Cas des CAD 3D Concepts de base & fondements.
Mohammed TAMALI
 
coursABGP-miage-1112-4p1.pdf
coursABGP-miage-1112-4p1.pdfcoursABGP-miage-1112-4p1.pdf
coursABGP-miage-1112-4p1.pdf
HervKoya
 
Cvnadirnew 110211085144-phpapp01
Cvnadirnew 110211085144-phpapp01Cvnadirnew 110211085144-phpapp01
Cvnadirnew 110211085144-phpapp01
May Saghira
 

Similaire à Applications Android - cours 7 : Ressources et adaptation au matériel (20)

Applications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobilesApplications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobiles
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
Cv kouadio kouame_olivier
Cv kouadio kouame_olivierCv kouadio kouame_olivier
Cv kouadio kouame_olivier
 
Chap10 : Outils de Simulation Cas des CAD 3D Concepts de base & fondements.
Chap10 : Outils de Simulation Cas des CAD 3D Concepts de base & fondements.Chap10 : Outils de Simulation Cas des CAD 3D Concepts de base & fondements.
Chap10 : Outils de Simulation Cas des CAD 3D Concepts de base & fondements.
 
Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017
 
Plasticité2015 technovf
Plasticité2015 technovfPlasticité2015 technovf
Plasticité2015 technovf
 
Applications Android (Planning)
Applications Android (Planning)Applications Android (Planning)
Applications Android (Planning)
 
02_Chapitre_1_.pdf
02_Chapitre_1_.pdf02_Chapitre_1_.pdf
02_Chapitre_1_.pdf
 
Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3
 
Tutorial android
Tutorial androidTutorial android
Tutorial android
 
EXemple 2.pptx
EXemple 2.pptxEXemple 2.pptx
EXemple 2.pptx
 
Rapport logiciels evenement_payombo_ly
Rapport  logiciels evenement_payombo_lyRapport  logiciels evenement_payombo_ly
Rapport logiciels evenement_payombo_ly
 
Proposition pim esprit mobile
Proposition pim esprit mobileProposition pim esprit mobile
Proposition pim esprit mobile
 
Analyse des besoins et gestion des projets besoin.pdf
Analyse des besoins et gestion des projets besoin.pdfAnalyse des besoins et gestion des projets besoin.pdf
Analyse des besoins et gestion des projets besoin.pdf
 
coursABGP-miage-1112-4p1.pdf
coursABGP-miage-1112-4p1.pdfcoursABGP-miage-1112-4p1.pdf
coursABGP-miage-1112-4p1.pdf
 
Introduction à Android
Introduction à AndroidIntroduction à Android
Introduction à Android
 
CV_Bilel CHAOUADI
CV_Bilel CHAOUADICV_Bilel CHAOUADI
CV_Bilel CHAOUADI
 
Cv kouadio kouame_olivier
Cv kouadio kouame_olivier Cv kouadio kouame_olivier
Cv kouadio kouame_olivier
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Cvnadirnew 110211085144-phpapp01
Cvnadirnew 110211085144-phpapp01Cvnadirnew 110211085144-phpapp01
Cvnadirnew 110211085144-phpapp01
 

Dernier

Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
ssuserc72852
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 

Dernier (20)

Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfSTRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 

Applications Android - cours 7 : Ressources et adaptation au matériel

  • 1. Université Constantine 2 Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz – Cours 7 – Chapitre 5 : Structure d’un projet Android (2/2) Développement d’applications mobiles 2018/2019. Semestre 1
  • 2. Université Constantine 2 Etudiants concernés Faculté/Institut Département Niveau Spécialité 2018/2019. Semestre 1 Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz Développement d’applications mobiles Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA – Cours 7 – Chapitre 5 : Structure d’un projet Android (2/2)
  • 3. Université Constantine 2 3 Prérequis Maîtrise de Android Studio Assimilation de la structure d’un projet Android Objectifs du cours Gérer les ressources en fonction du matériel Internationaliser son application Android Résumé © Dr. Chaouche A.-C.
  • 4. Université Constantine 2 4 Taille des écrans : 1 inch = 2,54 cm small, normal, large, xlarge Densité : DPI (Dot Per Inch) ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi Taille et densité des écrans © Dr. Chaouche A.-C.
  • 5. Université Constantine 2 5 Density independant Pixel (dp) dp = px / (dpi / 160) Taille et densité des écrans Indépendance de la densité © Dr. Chaouche A.-C. Dépendance de densité (px) Indépendance de densité (dp)
  • 6. Université Constantine 2 6 Taille et densité des écrans Distribution © Dr. Chaouche A.-C. ldpi mdpi tvdpi hdpi xhdpi xxhdpi Total Small 0.4 % 0.1 % 0.5 % Normal 0.8 % 0.3 % 25.4 % 41.2 % 24.4 % 92.1 % Large 2.4 % 1.4 % 0.3 % 0.5 % 4.9 % Xlarge 1.6 % 0.5 % 0.4 % 2.5 % Total 0.4 % 4.8 % 1.7 % 26.2 % 41.9 % 25.0 % 100 % Source : Google Play Store, 31 Août 2018
  • 7. Université Constantine 2 7 Vue portrait vs. vue paysage © Dr. Chaouche A.-C.
  • 8. Université Constantine 2 8 Il est possible de personnaliser les ressources, en fonction de : En utilisant des qualificateurs : par exemple : Par défaut : layout : layouts par défaut Orientation : layout-land : versions paysagedes layouts Densité : mipmap-xxhdpi : icônes pour des écrans de densité xxhdpi Taille : layout-large : layouts pour des écrans de taille large Langue : values-ar/strings.xml : chaînes de caractères en arabe ... Prise en charge des différentes configurations © Dr. Chaouche A.-C.
  • 9. Université Constantine 2 9 Images matricielles : drawable-ldpi/graphic.png 36 x 36 (0.75x) drawable-mdpi/graphic.png 48 x 48 (1.0x baseline) drawable-hdpi/graphic.png 72 x 72 (1.5x) drawable-xhdpi/graphic.png 96 x 96 (2.0x) drawable-xxhdpi/graphic.png 144 x 144 (3.0x) drawable-xxxhdpi/graphic.png 192 x 192 (4.0x) → Android Drawable Importer (Plugin) : Installation : Settings… > Plugins > Browse repositories… > Utilisation : res/drawable > New > Batch Drawable Import Icônes vectorielles : (Material ou SVG) drawable-anydpi/graphic.xml → Utilisation : res/drawable > New > Vector Asset Drawables et densité de l’écran © Dr. Chaouche A.-C.
  • 10. Université Constantine 2 10 Internationalisation (1/2) © Dr. Chaouche A.-C. /res/values/strings.xml <resources> <string name="hello"> Hello </string> ... </resources> /res/values-ar/strings.xml <resources> <string name="hello"> ‫سالم‬ </string> ... </resources>
  • 11. Université Constantine 2 11 Internationalisation (2/2) © Dr. Chaouche A.-C. /java/LoginActivity.java ... Locale myLocale = new Locale("ar"); DisplayMetrics dm = getResources().getDisplayMetrics(); Configuration conf = getResources().getConfiguration(); conf.locale = myLocale; getResources().updateConfiguration(conf, dm); ... Intent refresh = new Intent(this, LoginActivity.class); startActivity(refresh); finish(); ... Pour changer de langue dynamiquement (par programmation)
  • 12. Université Constantine 2 12 Layouts : RelativeLayout Attributs de RelativeLayout (1/2) © Dr. Chaouche A.-C. Aligner par rapport une autre vue ("@[+][package:]type:name") android:layout_above, android:layout_below android:layout_alignStart, android:layout_alignEnd android:layout_alignTop, android:layout_alignBottom android:layout_alignLeft, android:layout_alignRight Aligner par rapport au parent ("true" ou "false") android:layout_alignParentStart, android:layout_alignParentEnd android:layout_alignParentTop, android:layout_alignParentBottom android:layout_alignParentLeft, android:layout_alignParentRight android:layout_alignWithParentIfMissing
  • 13. Université Constantine 2 13 Layouts : RelativeLayout Attributs de RelativeLayout (2/2) © Dr. Chaouche A.-C. Centrer par rapport au parent ("true" ou "false") android:layout_centerHorizontal android:layout_centerVertical android:layout_centerInParent Positionner par rapport à une autre vue ("@[+][package:]type:name") android:layout_toStartOf, android:layout_toEndOf android:layout_toLeftOf, android:layout_toRightOf
  • 14. Université Constantine 2 14 Créer une activité ComplexActivity Créer 8 Boutons Aligner les boutons dans un RelativeLayout Layouts : RelativeLayout Exercice © Dr. Chaouche A.-C.
  • 15. Université Constantine 2 15 Layouts : RelativeLayout Solution © Dr. Chaouche A.-C. <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:text="ONE" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Button01" /> <Button android:text="TWO" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Button02" android:layout_centerHorizontal="true" /> <Button android:text="THREE" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Button03" android:layout_alignParentRight="true" /> <Button android:text="FOUR" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Button04" android:layout_toLeftOf="@+id/Button05" android:layout_centerVertical="true" /> <Button android:text="FIVE" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Button05" android:layout_centerInParent="true" /> <Button android:text="SIX" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Button06" android:layout_toRightOf="@+id/Button05" android:layout_centerVertical="true" /> <Button android:text="SEVEN" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Button07" android:layout_above="@+id/Button08" android:layout_centerHorizontal="true" /> <Button android:text="EIGHT" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/Button08" android:layout_alignParentBottom="true" /> </RelativeLayout>
  • 16. Université Constantine 2 16 Vue portrait vs. vue paysage © Dr. Chaouche A.-C.
  • 17. Université Constantine 2 17 Créer une version "paysage" de LoginActivity Créer un package "layout-land" Copier le fichier "layout_login.xml" dans "layout-land" Modifier le code du "layout_login.xml" pour avoir l'affichage suivant TP1b : Vue paysage de LoginActivity © Dr. Chaouche A.-C.
  • 18. Université Constantine 2 18 Documents sont accessibles : Plateforme e-learning de l’université Constantine 2 Lien : http://elearning.univ-constantine2.dz/ Rendus du TP 1 : Avant le Samedi 17 novembre à 23h59 À : ac.chaouche@misc-umc.org Nom du fichier à rendre : DAM_TP1_G%_NOMBINOME1_NOMBINOME2.zip (Ex : DAM_TP1_G1_CHAOUCHE_NECIBI.zip) Le fichier zip doit contenir seulement le dossier src Documents et Rendus © Dr. Chaouche A.-C.
  • 19. Université Constantine 2 19 Configurations d’écran : http://developer.android.com/guide/topics/resources/providing-resources.html Drawables : http://vogella.developpez.com/tutoriels/android/utilisation-drawable/ Android Drawable Import (Plugin) : https://plugins.jetbrains.com/plugin/7658-android-drawable-importer Quelques liens utiles © Dr. Chaouche A.-C.
  • 20. Université Constantine 2 20 Google Inc., «Google Play» 6 Juillet 2017. Lien : https://play.google.com. Android Developer, «Supporting Multiple Screens». Lien : https://developer.android.com/guide/practices/screens_support.html. M. Seguy et Y. Bergès, Android, A Complete Course, From Basics To Enterprise Edition, Édition Française éd., 2011, p. 279. S. Walter, «Android script Photoshop pour exporter en ldpi, hdpi et xhdpi», 5 Janvier 2012. Lien : https://blog.stephaniewalter.fr/android-script-photoshop- pour-exporter-en-ldpi-hdpi-et-xhdpi/. Android Developer, «References - Android Plateform API 28 : Relative Layout». Lien : https://developer.android.com/guide/topics/ui/layout/relative.html. Références © Dr. Chaouche A.-C.
  • 21. Université Constantine 2 21 Chapitre 6 : Gestion des évènements et intentions Objectifs : Gérer les évènements d’une vues (click, key, ...) Afficher des messages dans le Log et les Toasts Comprendre la gestion des activités Changer d’activité et transférer des données Prochain chapitre © Dr. Chaouche A.-C.
  • 22. Université Constantine 2 22 Créer un ScrollView dans la racine pour gérer le dépassement de l’écran Améliorer les champs de texte Supprimer le TextView Englober le EditText dans une balise android.support.design.widget.TextInputLayout Rajouter l’attribut android:hint dans le EditText qui remplace le TextView Annexe Améliorer l’ergonomie de la vue (1/2) © Dr. Chaouche A.-C.
  • 23. Université Constantine 2 23 Pour utiliser la vue android.support.design.widget.TextInputLayout Ajouter les dépendances : com.android.support:design:26.+ Méthode 1 : Project Structure > Modules > app > Onglet Depenendencies Méthode 2 : (dans le Gradle) Annexe Améliorer l’ergonomie de la vue (2/2) © Dr. Chaouche A.-C. /Gradle Scripts/build.gradle (Module: app) ... dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support:design:26.+' }