Programmation Mobile Android Master CCI

Similar documents
GUIDE D INSTALLATION PVC CELLULAIRE

HOLA SAFETY RING PLAN

1. Configurez votre Stick Up Cam Wired dans l application Ring.

Index. RainBlade 1970

ThermaWall XTRM2600 Unitized Curtain Wall

P10SC01 900x2000 MANUEL D INSTALLATION / INSTALLATION MANUAL. 80"(2030mm) 78 3/4"(2000mm)

Index. TerraPorte 7600 & accessable

more info PROMOTIONS E-SAVERS Information about E-Savers Current E-Savers Promotions Enroll in the E-Savers Program SPECIALS

SCADE for AIRBUS critical avionics systems

THE WORLD IS YOURS. Formations linguistiques & interculturelles

Thermographie, pourquoi l utiliser?

Effects of the Nile damming on Alexandria coastal waters Effets du barrage du Nil sur la qualité des eaux côtières d Alexandrie

A comme amitié (Deuxième partie) (pp Studio HIGHER) Saying what people seem to be like and why GRAMMAR: Irregular verbs in the PRESENT TENSE

The European Association of Middle East Librarians Association européenne des bibliothécaires du Moyen-Orient

GENE-AUTO Status of new Airbus case Studies

Développement d Application & interface Web-BDD

ESPACE DES ONG / NGO SPACE 39 e session de la Conférence générale / 39 th session of the General Conference

I We reserve the right to modify or attar Instructions. No modification or

Partitionnement à l'aide du gestionnaire Integrated Virtualization Manager

WELCOME TO ALL OUR VOLVO S AMATEURS FRIENDS

TIP TOP!: LIVRE DE L'ELEVE 2 (FRENCH EDITION) BY CATHERINE ADAM DOWNLOAD EBOOK : TIP TOP!: LIVRE DE L'ELEVE 2 (FRENCH EDITION) BY CATHERINE ADAM PDF

Index. TerraPorte 7600 & accessable

On July 20, 2017, the Premier's Office received your request for access to the following records/information:

Roll Up 28. Ref A. DE Anleitung FR Notice ES Manual PT Instruções PL Instrukcja RU Руководство CS Návod

FITTING INSTRUCTIONS FOR CP0368BL AERO CRASH PROTECTORS DUCATI MONSTER

BANQUE DE DONNEES MINIERES DU GROUPE DES ETATS ACP

71248

71248

TM 71251

SKI TOURING RAID : ECRIN SUMMITS in 6 days

AMALY 54" ZITTACLEAN Le micro film protecteur formé lors de son application,fera perler l'eau sur le verre afin d'en faciliter l'entretien.

Michelin Green Sightseeing Travel Guide Alpes Du Sud, Haute Provence (France) French Language Edition (French Edition)

Le Petit Prince, Educational Edition By Antoine De Saint-Exupery

Procurement Plan. I. General

Dangerous Goods Handling and Règlement sur la manutention et le transport

Republique Dominicaine / Haiti

French WEATHER. Il fait: it is. Il y a: there is/are. Beau beautiful (sunny) Mau vais - bad. De la pluie - raining. Du vent - windy.

0000 NAME: P.C.: L7C1J6 CONTACT: If necessary, please update above information - Si nécessaire, veuillez mettre à jour les renseignements ci-dessus

RT2N Thermostat compact

INTERNATIONAL STANDARD NORME INTERNATIONALE

CAREFREE CONNECTS MOBILE APP

DOWNLOAD OR READ : MICHELIN RED GUIDE FRANCE 1990 PDF EBOOK EPUB MOBI

Republique Dominicaine / Haiti

kurt versen INSTALLATION INSTRUCTIONS-L342/4/6 SURFACE MOUNTED LED SQUARE CYLINDER

CAREFREE CONNECTS MOBILE APP

INTERNATIONAL STANDARD NORME INTERNATIONALE

AGENCE POUR LA SÉCURITÉ DE LA NAVIGATION AÉRIENNE EN AFRIQUE ET A MADAGASCAR

SOMMAIRE WORK IN SAS MODE BORDEAUX OR ST NAZAIRE CAN TAKE 3 TABLES OF 4 AGENTS ONE LEADER PER TABLE 10. BOOK A CAR 1.

A structuring public transport project for Cape Town Inner City

BOLDI V ADMIRE 0200HO10463 HOCANM Price: $20. Built for Automation. discount GEN-I-BEQ PRINCIPAL 0200HO10367 HOCANM

AMPLIFICADOR PARA MÁSTIL AMPLIFIER FOR MAST AMPLIFICATEUR POUR MÂT CÓDIGOCODECODE MODELOMODELMODELE 900 AM AM AM07 Número de entradas

Notre sélection de bateaux à la location. Our selection of rental boats

Bagagerie - Luggage COLLECTION FW 18-19

SEMI-CONCEALED CEILING-MOUNTED WALL-MOUNTED CONCEALED DUCT ST-NPFL 12R ST-NPFL 16R ST-NPFL 18R ST-NPFL 24R ST-NPFL 36R ST-NPFL 48R FLOOR STANDING

RAPPORT DE TEST DE / TEST REPPORT BY. 01-mars-12. BOYER Marc. Date MODELE / MODEL DIAMIR MARQUE / MANUFACTORY NERVURES

Example 5 «Breizh-bocage» program

Petit Fut Download Find Petit Fut software downloads at CNET Download, the most comprehensive source for safe, trusted, and spyware free downloads on

Impressionism On The Seine By Dominique Lobstein READ ONLINE

R600 Power Base. Owner s Manual and Reference Guide. REV: Manual Part No. LIT-MAN-DT. Copyright All Rights Reserved. Ascion LLC.

CONVOCATION The Westin Zagreb Krsnjavoga 1 Zagreb, CROATIA : (385) (1) : (385) (1)

OCCASION DISCLAIMER FAIR USE POLICY CONTACT. Please contact for further information concerning UNIDO publications.

9 me Atelier du Club Display. Bienvenue

Call to Book:

17/04/ :36 1/15 VLC media player

Benin Tourist visa Application for citizens of Bangladesh living in Alberta

SONNENKRAFT COMPACT E & SKR 500

Application Note. Utilisation du logiciel PDQ V3 (Parker Drive Quicktool) AC30V V ou supérieure AC30 P/D/A V ou supérieure Version B

SONNENKRAFT COMPACT E EHP & SKR 500

Rapport d'activités des CN 2006 Activity Report Form 2006

DOWNLOAD OR READ : MANUEL ANTONIO OCEAN TEMPERATURE PDF EBOOK EPUB MOBI

SALMANAZAR VERSATILE TYPE STANDARD SET 8 STYLES JULIETTE COLLIN 2018

INTERNATIONAL STANDARD NORME INTERNATIONALE

Homeowners Guide. Bath Whirlpool C K-1110-V

LES PORTES DE LA PERCEPTION (FRENCH EDITION) BY ALDOUS HUXLEY

MONACO GRAND PRIX MAY 23TH TO 26TH 2019

A V I A T I O N BI 2008/72 C I V I L E

PROCUREMENT PLAN (Textual Part)

VISALE PROCEDURE. How to apply for a visa with "visale.fr"? Mars 2019

Hydrological role of avalanches in the Caucasus. M. Ch. Zalikhanov

Le Tour Du Monde En 80 Jours (French Edition) By Jules Verne

PASSAGE DE CÂBLES. +33 (0) PASSAGE DE CABLES DISTRIBUTION OF POWER LINES

ITV. PTV 60 kg TAILLE /SIZE 18

Montréal Créatif - Rosemont, Saint-Michel Et Villeray (French Edition) By Jerome Delgado READ ONLINE

For Overseas Buyers Invitation to to

Rough Guides - Official Site - travel and music guide publishers; includes an online guide to destinations throughout the world, as well as a guide

Pays De La Loire: Ign.R07 Map By Ign

FALCON SERVICE BULLETIN

Installation Guide. Vibracoustic Bath E

GLOBAL BUSINESS COMMUNICATION (FRENCH)

Foyer électrique mural courbé de 107 cm / 42 po

Le Val d'enfer Les Baux-de-Provence

Aran. Level 1 Session Brush up your Vocabulary! Choose words from the list to complete the sentences:

The Nation Municipality Municipalité de La Nation. Budget 2007 Presented on May 7th Présenté le 7 mai

TCO REFERENCE: BBTS-500MR RGE CODIC:

Rapport d'activités des CN 2007 Activity Report Form 2007

Owner s Manual AIR CONDITIONER (SPLIT TYPE) Indoor Unit RAV-SM404SDT-E RAV-SM454SDT-E RAV-SM564SDT-E. Model name: Slim Duct Type. Italiano.

I lf:,jo ~ S-o 3S9~75"97. ARRETE NO. Z lOZ. BY-LAW NO. Z lOZ. A by-law amending Zoning By-Law Z of the Town of Shediac

Introduction, Etat des lieux, Illustration clinique, Perspectives, Conclusion. 2 ème Colloque Francophone de Pratiques en TCC-Cynthia Acca (2018) 2

INTERNATIONAL STANDARD NORME INTERNATIONALE

TECHNICAL SPECIFICATION SPÉCIFICATION TECHNIQUE

Transcription:

Programmation Mobile Android Master CCI Bertrand Estellon Aix-Marseille Université March 23, 2015 Bertrand Estellon (AMU) Android Master CCI March 23, 2015 1 / 266

Les fragments Un fragment : représente une portion d interface utilisateur ; peut être inséré dans une activité ; peut être utilisé dans plusieurs activités ; possède son propre cycle de vie, layout, etc ; Une activité : peut afficher plusieurs fragments ; peut utiliser une pile pour gérer la navigation entre fragments ; Bertrand Estellon (AMU) Android Master CCI March 23, 2015 80 / 266

Interfaces Une application avec deux fragments Bertrand Estellon (AMU) Android Master CCI March 23, 2015 81 / 266

Premier layout : le formulaire Le layout correspondant au formulaire du premier écran : <LinearLayout xmlns:android=""> <EditText android:id="@+id/edittext1" android:inputtype="number" /> <TextView android:text="@string/plus" /> <EditText android:id="@+id/edittext2" android:inputtype="number" /> <Button android:id="@+id/button" android:text="@string/equals" /> </LinearLayout> Bertrand Estellon (AMU) Android Master CCI March 23, 2015 82 / 266

Deuxième layout : le resultat <TextView xmlns:android="" xmlns:tools="" android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:textsize="100dp" android:text="+" /> Bertrand Estellon (AMU) Android Master CCI March 23, 2015 83 / 266

Interfaces Le layout de l activité principale Le layout de l activité principale : <FrameLayout xmlns:android="" xmlns:tools="" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" /> Bertrand Estellon (AMU) Android Master CCI March 23, 2015 84 / 266

L activité principale Le code de l activité principale : public class MainActivity extends Activity { protected void oncreate(bundle savedinstancestate) { superoncreate(savedinstancestate); setcontentview(rlayoutactivity_main); if (savedinstancestate == null) { getfragmentmanager()begintransaction() add(ridcontainer, new FormFragment()) commit(); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 85 / 266

La création de la vue dans le premier fragment Le code du premier fragment : public class FormFragment extends Fragment { public View oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) { View view = inflaterinflate(rlayoutfragment_form, container, false); return view; Bertrand Estellon (AMU) Android Master CCI March 23, 2015 86 / 266

Interfaces Cycle de vie d un fragment (Work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 25 Attribution License) Bertrand Estellon (AMU) Android Master CCI March 23, 2015 87 / 266

Système de notification entre le fragment et l activité Le fragment FormFragment doit notifier l activité de la validation du formulaire lorsque l utilisateur clique sur le bouton ; Nous allons définir une interface pour rendre le fragment réutilisable : public interface FormFragmentListener { void onequals(double value1, double value2); L activité va implémenter cette interface ; Lors de l exécution de la méthode onattach du fragment, nous allons conserver une référence afin d être capable de notifier l activité Bertrand Estellon (AMU) Android Master CCI March 23, 2015 88 / 266

Système de notification entre le fragment et l activité Nous conservons la référence de l activité : public class FormFragment extends Fragment { private FormFragmentListener listener; public void onattach(activity activity) { superonattach(activity); try { listener = (FormFragmentListener)activity; catch (ClassCastException e) { throw new ClassCastException(activitytoString() + " must implement OnClickListener"); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 89 / 266

Système de notification entre le fragment et l activité Nous faisons en sorte d écouter les clics sur le bouton : public class FormFragment extends Fragment { private EditText edittext1, edittext2; private FormFragmentListener listener; public View oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) { View view = inflaterinflate(rlayoutfragment_form, container, false); edittext1 = (EditText)viewfindViewById(RideditText1); edittext2 = (EditText)viewfindViewById(RideditText2); Button button = (Button)viewfindViewById(Ridbutton); buttonsetonclicklistener(new OnClickListener()); return view; Bertrand Estellon (AMU) Android Master CCI March 23, 2015 90 / 266

Système de notification entre le fragment et l activité Nous notifions l activité si un clic se produit : public class FormFragment extends Fragment { private EditText edittext1, edittext2; private FormFragmentListener listener; private class OnClickListener implements ViewOnClickListener { public void onclick(view v) { double value1 = DoubleparseDouble(editText1getText()toString()); double value2 = DoubleparseDouble(editText2getText()toString()); listeneronequals(value1, value2); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 91 / 266

Système de notification entre le fragment et l activité Réception de la notification par l activité : public class MainActivity extends Activity implements FormFragmentListener { protected void oncreate(bundle savedinstancestate) { superoncreate(savedinstancestate); setcontentview(rlayoutactivity_main); if (savedinstancestate == null) { getfragmentmanager()begintransaction() add(ridcontainer, new FormFragment()) commit(); public void onequals(double value1, double value2) { /* TODO : afficher le résultat */ Bertrand Estellon (AMU) Android Master CCI March 23, 2015 92 / 266

Le deuxième fragment Mise en place du layout du deuxième fragment : public class ResultFragment extends Fragment { public View oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) { View view = inflaterinflate(rlayoutfragment_result, container, false); TextView textview = (TextView)viewfindViewById(RidtextView); textviewsettext(""+value()); return view; public double value() { /* TODO */ Bertrand Estellon (AMU) Android Master CCI March 23, 2015 93 / 266

Les paramètres d un fragment Les paramètres sont conservés même si le fragment est détruit : public class ResultFragment extends Fragment { public static ResultFragment getinstance(double value) { ResultFragment fragment = new ResultFragment(); Bundle bundle = new Bundle(); bundleputdouble("value", value); fragmentsetarguments(bundle); return fragment; public double value() { return getarguments()getdouble("value"); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 94 / 266

Affichage de deux fragments par l activité Affichage du deuxième fragment par l activité : public class ResultFragment extends Fragment implements FormFragmentListener { public void onequals(double value1, double value2) { double value = value1+value2; getfragmentmanager()begintransaction() replace(ridcontainer, ResultFragmentgetInstance(value)) addtobackstack("result") commit(); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 95 / 266

Interfaces Affichage de deux fragments par l activité Bertrand Estellon (AMU) Android Master CCI March 23, 2015 96 / 266

Affichage de deux fragments par l activité Le layout de l activité par défaut : <?xml version="10" encoding="utf-8"?> <LinearLayout xmlns:android="" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment class="comuniv_amuccimyapplicationformfragment" android:id="@+id/form" android:layout_width="match_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/detailselementbackground" /> </LinearLayout> Bertrand Estellon (AMU) Android Master CCI March 23, 2015 97 / 266

Affichage de deux fragments par l activité Le layout de l activité en mode paysage (dans le répertoire layout-land) : <?xml version="10" encoding="utf-8"?> <LinearLayout xmlns:android="" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment class="comuniv_amuccimyapplicationformfragment" android:id="@+id/form" android:layout_weight="1" android:layout_width="0px" android:layout_height="match_parent" /> <FrameLayout android:id="@+id/container" android:layout_weight="1" android:layout_width="0px" android:layout_height="match_parent" android:background="?android:attr/detailselementbackground" /> </LinearLayout> Bertrand Estellon (AMU) Android Master CCI March 23, 2015 98 / 266

Affichage de deux fragments par l activité Le code de l activité : public class MainActivity extends Activity implements FormFragmentListener { protected void oncreate(bundle savedinstancestate) { superoncreate(savedinstancestate); setcontentview(rlayoutactivity_main); public void onequals(double value1, double value2) { double value = value1+value2; getfragmentmanager()begintransaction() replace(ridcontainer, ResultFragmentgetInstance(value)) addtobackstack("result") commit(); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 99 / 266

Interfaces Les boites de dialogue Bertrand Estellon (AMU) Android Master CCI March 23, 2015 100 / 266

Les boites de dialogue Les boites de dialogue sont des fragments particuliers : public class DialogFragment extends androidappdialogfragment { private EditText edittext; public Dialog oncreatedialog(bundle savedinstancestate) { AlertDialogBuilder builder = new AlertDialogBuilder(getActivity()); LayoutInflater inflater = getactivity()getlayoutinflater(); View view = inflaterinflate(rlayoutdialog, null); edittext = (EditText)viewfindViewById(RideditText); buildersetview(view) setpositivebutton(androidrstringok, new OnPositiveButtonClickListener()) setnegativebutton(androidrstringcancel, new MyOnNegativeButtonClickListener()); return buildercreate(); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 101 / 266

Les boites de dialogue Nous allons faire communiquer le fragment et l activité via l interface : public interface DialogFragmentListener { void onchangetext(string text); On redéfinit ensuite la méthode onattach : public class DialogFragment extends androidappdialogfragment { private DialogFragmentListener listener; public void onattach(activity activity) { superonattach(activity); try { listener = (DialogFragmentListener)activity; catch (ClassCastException e) { throw new ClassCastException(activitytoString() + " must implement OnClickListener"); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 102 / 266

Les boites de dialogue On implémente ensuite les deux classes internes de façon à traiter correctement la validation et l annulation du formulaire : public class DialogFragment extends androidappdialogfragment { private class OnPositiveButtonClickListener implements DialogInterfaceOnClickListener { public void onclick(dialoginterface dialog, int id) { listeneronchangetext(edittextgettext()tostring()); DialogFragmentthisgetDialog()dismiss(); private class MyOnNegativeButtonClickListener implements DialogInterfaceOnClickListener { public void onclick(dialoginterface dialog, int id) { DialogFragmentthisgetDialog()cancel(); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 103 / 266

Les boites de dialogue Code de l activité principale : public class MainActivity extends Activity implements DialogFragmentListener { private TextView textview; protected void oncreate(bundle savedinstancestate) { superoncreate(savedinstancestate); setcontentview(rlayoutactivity_main); textview = (TextView)findViewById(RidtextView); textviewsetonclicklistener(new MyOnClickListener()); /* */ Bertrand Estellon (AMU) Android Master CCI March 23, 2015 104 / 266

Les boites de dialogue Code de l activité principale : public class MainActivity extends Activity implements DialogFragmentListener { private TextView textview; /* */ public void onchangetext(string text) { textviewsettext(text); private class MyOnClickListener implements ViewOnClickListener { public void onclick(view v) { DialogFragment newfragment = new DialogFragment(); newhow(getfragmentmanager(), "dialog"); Bertrand Estellon (AMU) Android Master CCI March 23, 2015 105 / 266