SlideShare a Scribd company logo
1 of 20
1
Android2EE est référencé en tant qu’organisme de formation, vous pouvez faire prendre en charge tout ou partie du montant de cette
formation par votre OPCA. Cette formation Initiation avancée à Android est éligible au titre du DIF et CIF.
Lieu : Paris, Toulouse, Lyon,
Rennes, Nantes, Lille
Durée : 3 jours
Prix : 1680 €
Lieu : Paris, Toulouse, Lyon,
Rennes, Nantes, Lille
Durée : 5 jours
Prix : 2980 €
Lieu : Paris, Toulouse, Lyon,
Rennes, Nantes, Lille
Durée : 3 jours
Prix : 1780 €
3
0 Downloads:
Mettez à jour votre Android SDK (surtout la support librairy)
4
SupportLib V18
Soyez sûr d'avoir votre environnement à jour et d'utiliser la
version 18 (au moins).
Attention
5
1 Install the project android-support-v7-appcompat in workspace as an Eclipse project:
1. Dans Eclipse New->Android Project From Existing Code. Choisir android-support-v7-appcompat
(dans le dossier de android-sdkextrassupportv7).
New->Android Project From Existing Code
6
1. Dans votre projet, toujours dans la fenêtre properties(ou BuildPath)->Android et ajoutez la lib support-v7
2 Bind it to your project
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat" >
<activity
android:name="com.android2ee.formation.librairies.actionbar.compat.MainActivity"
android:label="@style/Theme.AppCompat" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
7
Il en vous reste plus qu'à modifier le projet ainsi:
Vous utiliser toujours les ActionBarActivity (au lieu des FragmentActivity)
Votre Manifest doit avoir pour thème le thème Sherlock
Manifest
Utiliser toujours les ActionBarActivity
Fondamental
8
Il en vous reste plus qu'à lancer votre projet
SDK 4.2.2 Nexus4
SDK 2.3.3 Emulator
9
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_with_items, menu);
return super.onCreateOptionsMenu(menu);
}
La principale fonctionalité est simple à mettre en place, à un détail, le name space pour le showAsAction.
Java
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:actionbarcompat_mse="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_one"
android:icon="@drawable/ic_action_one_inverse"
android:orderInCategory="0"
actionbarcompat_mse:showAsAction="always"
android:title="One"/>
<item
android:id="@+id/action_two"
android:icon="@drawable/ic_action_two_inverse"
android:orderInCategory="0"
actionbarcompat_mse:showAsAction="ifRoom"
android:title="Two"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
actionbarcompat_mse:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
menuactivity_with_items.xml
10
SDK 4.2.2 Nexus4 SDK 2.3.3 Emulator
https://github.com/excilys/androidannotations/wiki/WorkingWithThreads
11
SupportLib V18
Pas de construction dynamique pour l'instant.
Attention
Using XML attributes from the support library
Notice that the showAsAction attribute above uses a custom namespace
defined in the <menu> tag. This is necessary when using any XML
attributes defined by the support library, because these attributes do not
exist in the Android framework on older devices. So you must use your
own namespace as a prefix for all attributes defined by the support library.
Les ActionView permettent d'afficher une vue dans l'ActionBar quand l'utilisateur clique sur le MenuItem associé.
12
SDK 2.3.3 Emulateur
L'EditText s'affiche et le
bouton aussi
L'appuie sur < affiche la
vue (EDT+BTN)
On rentre un message et
on appuie sur le bouton
La valeur de l'EDT
s'affiche dans un Toast,
l'ActionView est réduite
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:actionbarcompat_mse="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_item_actionview"
actionbarcompat_mse:actionLayout="@layout/actionview_view"
actionbarcompat_mse:showAsAction="always|collapseActionView"
android:icon="@drawable/ic_action_provider_extends"
android:title="ActionView"/>
<item
android:id="@+id/action_one"
actionbarcompat_mse:showAsAction="always"
android:icon="@drawable/ic_action_one_inverse"
android:orderInCategory="0"
android:title="One"/>
</menu>
Trois fichiers sont nécessaires pour mettre en place une ActionView: du code Java, le fichier xml des MenuItem et le fichier des layouts
de la vue affichant l'ActionView.
menu/actionview.xml
13
Le fichier des menus déclarent l'ActionView en tant
qu'icone à afficher sur la barre d'action.
Le point crucial est le name space pour l'actionLayout
qui est le même que pour la balise showAsAction.
La balise actionLayout pointe vers le fichier de layout
à utiliser quand la vue de l'ActionView s'affiche.
Le mot clef collapseActionView permet de réduire
automatiquement l'ActionView à la création.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="match_parent"
android:layout_gravity="center" android:focusable="true" >
<EditText
android:id="@+id/edtActionView" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:ems="12"
android:hint="I am an EditText but I could be whatever"
android:textSize="12sp" />
<ImageButton android:id="@+id/btnActionView"
android:layout_width="32dip" android:layout_height="32dip"
android:layout_gravity="center" android:adjustViewBounds="true"
android:background="@drawable/ic_action_actionview_ok"
android:scaleType="fitCenter" />
</LinearLayout>
Le fichier des layouts est un fichier de layout normal.
layout/actionview_view.xml
14
MenuItem menuItemActionView;
LinearLayout lilActionView;
EditText edtActionView;
ImageButton btnActionView;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.actionview, menu);
menuItemActionView = menu.findItem(R.id.menu_item_actionview);
lilActionView = (LinearLayout)
MenuItemCompat.getActionView(menuItemActionView);
edtActionView = (EditText)
lilActionView.findViewById(R.id.edtActionView);
btnActionView = (ImageButton)
lilActionView.findViewById(R.id.btnActionView);
btnActionView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {actionOfTheActionView();}
});
return super.onCreateOptionsMenu(menu);
}
/**
* Handling Action from the btnActionView contained by the
ActionView
*/
private void actionOfTheActionView() {
Toast.makeText(this,
ActionView edt = "+edtActionView.getText().toString(),
Toast.LENGTH_SHORT)
.show();
MenuItemCompat.collapseActionView(menuItemActionView);
}
Enfin, en Java, il suffit de mettre en place la classe qui étend ActionProvider et qui décrit son comportement.
ActionViewActivity.class
15
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.actionview, menu);
menuItemActionView = menu.findItem(R.id.menu_item_actionview);
// When using the support library, the setOnActionExpandListener()
method is
// static and accepts the MenuItem object as an argument
MenuItemCompat.setOnActionExpandListener(menuItemActionView,
new OnActionExpandListener() {
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
// Do something when collapsed
return true; // Return true to collapse action view}
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
// Do something when expanded
return true; // Return true to expand action view}
});
return super.onCreateOptionsMenu(menu);}
Ajouter un Listener pour le changement d'état (collapse/expand)
ActionViewActivity.class
16
L'ActionMode permet de changer l'ActionBar normale en ActionBar d'actions pure.
17
ActionMode off ActionMode on
SDK 2.3.3 Emulator SDK 2.3.3 Emulator
import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.view.ActionMode;
import android.support.v7.view.ActionMode.Callback;
...
//To start the ActionMode
mMode = startSupportActionMode(new Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {return false;}
public void onDestroyActionMode(ActionMode mode) {}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
getMenuInflater().inflate(R.menu.action_mode, menu);
return true;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
mode.finish();
return true;
}
});
//To stop the ActionMode
mMode.finish();
La principale fonctionalité est simple à mettre en place, à un détail, le name space pour le showAsAction.
Java
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:actionbarcompat_mse="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_one"
android:icon="@drawable/ic_action_one_inverse"
android:orderInCategory="0"
actionbarcompat_mse:showAsAction="always"
android:title="One"/>
<item
android:id="@+id/action_two"
android:icon="@drawable/ic_action_two_inverse"
android:orderInCategory="0"
actionbarcompat_mse:showAsAction="ifRoom"
android:title="Two"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
actionbarcompat_mse:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
menuaction_mode.xml
18
Merci à Jack Wharton pour sa librairie et ses exemples d'utilisation (que j'ai utilisé à fond pour le tuto d'ActionBarActivity)
19
Merci à eux.
Vous pouvez migrer de la SherlockBar vers ActionBarActivity de
manière transparente, sans modifier le code (ou presque).
Fondamental
Jake Wharton Chris Banes
20
#android2ee
mathias.seguy@android2ee.com
www.android2ee.com

More Related Content

What's hot

Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Les interface graphiques sous android
Les interface graphiques sous androidLes interface graphiques sous android
Les interface graphiques sous androidHoussem Lahiani
 
CocoaHeads An Android Overview (fr)
CocoaHeads An Android Overview (fr)CocoaHeads An Android Overview (fr)
CocoaHeads An Android Overview (fr)Mathias Seguy
 
Introduction à Android
Introduction à AndroidIntroduction à Android
Introduction à AndroidYoann Gotthilf
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrageLilia Sfaxi
 
Android pour les debutants
Android pour les debutantsAndroid pour les debutants
Android pour les debutantsAmira Hakim
 
Workshop IoT Hub : Pilotez une ampoule connectée
Workshop IoT Hub : Pilotez une ampoule connectéeWorkshop IoT Hub : Pilotez une ampoule connectée
Workshop IoT Hub : Pilotez une ampoule connectéeScaleway
 
Initiation Android Niveau Débutant
Initiation Android Niveau DébutantInitiation Android Niveau Débutant
Initiation Android Niveau DébutantNadim GOUIA
 
In01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIIn01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIYann Caron
 

What's hot (11)

Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Les interface graphiques sous android
Les interface graphiques sous androidLes interface graphiques sous android
Les interface graphiques sous android
 
CocoaHeads An Android Overview (fr)
CocoaHeads An Android Overview (fr)CocoaHeads An Android Overview (fr)
CocoaHeads An Android Overview (fr)
 
Introduction à Android
Introduction à AndroidIntroduction à Android
Introduction à Android
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android pour les debutants
Android pour les debutantsAndroid pour les debutants
Android pour les debutants
 
Workshop IoT Hub : Pilotez une ampoule connectée
Workshop IoT Hub : Pilotez une ampoule connectéeWorkshop IoT Hub : Pilotez une ampoule connectée
Workshop IoT Hub : Pilotez une ampoule connectée
 
Mvc (5)
Mvc (5)Mvc (5)
Mvc (5)
 
Android: Les intents
Android: Les intentsAndroid: Les intents
Android: Les intents
 
Initiation Android Niveau Débutant
Initiation Android Niveau DébutantInitiation Android Niveau Débutant
Initiation Android Niveau Débutant
 
In01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIIn01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMI
 

Viewers also liked

ProTips DroidCon Paris 2013
ProTips DroidCon Paris 2013ProTips DroidCon Paris 2013
ProTips DroidCon Paris 2013Mathias Seguy
 
Google Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleGoogle Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleMathias Seguy
 
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...Mathias Seguy
 
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...Mathias Seguy
 
Treatment, Architecture and Threads
Treatment, Architecture and ThreadsTreatment, Architecture and Threads
Treatment, Architecture and ThreadsMathias Seguy
 
Android un nouveau futur s'ouvre à nous
Android un nouveau futur s'ouvre à nousAndroid un nouveau futur s'ouvre à nous
Android un nouveau futur s'ouvre à nousMathias Seguy
 
Voyage en monde Android. Trucs et astuces tout au long de la route.
Voyage en monde Android. Trucs et astuces tout au long de la route.Voyage en monde Android. Trucs et astuces tout au long de la route.
Voyage en monde Android. Trucs et astuces tout au long de la route.Mathias Seguy
 
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)Animate Me, if you don't do it for me do it for chet (DroidCon Paris)
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)Mathias Seguy
 
Android2EE training: Tutorials list of Android projects
Android2EE training: Tutorials list of Android projectsAndroid2EE training: Tutorials list of Android projects
Android2EE training: Tutorials list of Android projectsMathias Seguy
 
Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015
Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015
Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015Mathias Seguy
 
The 2016 Android Developer Toolbox [NANTES]
The 2016 Android Developer Toolbox [NANTES]The 2016 Android Developer Toolbox [NANTES]
The 2016 Android Developer Toolbox [NANTES]Nilhcem
 
Animate me, If you don't do it for me do it for Chet :)
Animate me, If you don't do it for me do it for Chet :)Animate me, If you don't do it for me do it for Chet :)
Animate me, If you don't do it for me do it for Chet :)Mathias Seguy
 
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiquePrésentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiqueDenis Voituron
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1Mathias Seguy
 
In01 - Programmation Android - 04 - databases
In01 - Programmation Android - 04 - databasesIn01 - Programmation Android - 04 - databases
In01 - Programmation Android - 04 - databasesYann Caron
 
In01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionIn01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionYann Caron
 

Viewers also liked (16)

ProTips DroidCon Paris 2013
ProTips DroidCon Paris 2013ProTips DroidCon Paris 2013
ProTips DroidCon Paris 2013
 
Google Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleGoogle Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification Google
 
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
 
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
 
Treatment, Architecture and Threads
Treatment, Architecture and ThreadsTreatment, Architecture and Threads
Treatment, Architecture and Threads
 
Android un nouveau futur s'ouvre à nous
Android un nouveau futur s'ouvre à nousAndroid un nouveau futur s'ouvre à nous
Android un nouveau futur s'ouvre à nous
 
Voyage en monde Android. Trucs et astuces tout au long de la route.
Voyage en monde Android. Trucs et astuces tout au long de la route.Voyage en monde Android. Trucs et astuces tout au long de la route.
Voyage en monde Android. Trucs et astuces tout au long de la route.
 
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)Animate Me, if you don't do it for me do it for chet (DroidCon Paris)
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)
 
Android2EE training: Tutorials list of Android projects
Android2EE training: Tutorials list of Android projectsAndroid2EE training: Tutorials list of Android projects
Android2EE training: Tutorials list of Android projects
 
Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015
Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015
Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015
 
The 2016 Android Developer Toolbox [NANTES]
The 2016 Android Developer Toolbox [NANTES]The 2016 Android Developer Toolbox [NANTES]
The 2016 Android Developer Toolbox [NANTES]
 
Animate me, If you don't do it for me do it for Chet :)
Animate me, If you don't do it for me do it for Chet :)Animate me, If you don't do it for me do it for Chet :)
Animate me, If you don't do it for me do it for Chet :)
 
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiquePrésentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
 
In01 - Programmation Android - 04 - databases
In01 - Programmation Android - 04 - databasesIn01 - Programmation Android - 04 - databases
In01 - Programmation Android - 04 - databases
 
In01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionIn01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introduction
 

Similar to Mise en place de l'ActionBarCompat dans vos projets Android.

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
 
Etendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs androidEtendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs androidXavier Hallade
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Farouk Mezghich
 
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple WatchMobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple WatchUSERADGENTS
 
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
 
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
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursLilia Sfaxi
 
Chapitre_11-_React-Redux.pdf
Chapitre_11-_React-Redux.pdfChapitre_11-_React-Redux.pdf
Chapitre_11-_React-Redux.pdfHassanHachicha2
 
Apple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetApple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetCocoaHeads France
 
Tutorial android - créer des apps
Tutorial android - créer des appsTutorial android - créer des apps
Tutorial android - créer des appsNoé Breiss
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2dhugomallet
 
Développement d’extensions WordPress
Développement d’extensions WordPressDéveloppement d’extensions WordPress
Développement d’extensions WordPressChi Nacim
 
Symposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorArthurMaroulier
 

Similar to Mise en place de l'ActionBarCompat dans vos projets Android. (20)

TP_1.pdf
TP_1.pdfTP_1.pdf
TP_1.pdf
 
Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.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
 
Etendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs androidEtendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs android
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple WatchMobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
 
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
 
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
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
Chapitre_11-_React-Redux.pdf
Chapitre_11-_React-Redux.pdfChapitre_11-_React-Redux.pdf
Chapitre_11-_React-Redux.pdf
 
Apple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetApple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey Bocquet
 
Tutorial android - créer des apps
Tutorial android - créer des appsTutorial android - créer des apps
Tutorial android - créer des apps
 
Tutorial android
Tutorial androidTutorial android
Tutorial android
 
Android2017 cours2
Android2017 cours2Android2017 cours2
Android2017 cours2
 
Les Widgets
Les WidgetsLes Widgets
Les Widgets
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2d
 
react-fr.pdf
react-fr.pdfreact-fr.pdf
react-fr.pdf
 
Développement d’extensions WordPress
Développement d’extensions WordPressDéveloppement d’extensions WordPress
Développement d’extensions WordPress
 
Symposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme Meteor
 

Mise en place de l'ActionBarCompat dans vos projets Android.

  • 1. 1
  • 2. Android2EE est référencé en tant qu’organisme de formation, vous pouvez faire prendre en charge tout ou partie du montant de cette formation par votre OPCA. Cette formation Initiation avancée à Android est éligible au titre du DIF et CIF. Lieu : Paris, Toulouse, Lyon, Rennes, Nantes, Lille Durée : 3 jours Prix : 1680 € Lieu : Paris, Toulouse, Lyon, Rennes, Nantes, Lille Durée : 5 jours Prix : 2980 € Lieu : Paris, Toulouse, Lyon, Rennes, Nantes, Lille Durée : 3 jours Prix : 1780 €
  • 3. 3
  • 4. 0 Downloads: Mettez à jour votre Android SDK (surtout la support librairy) 4 SupportLib V18 Soyez sûr d'avoir votre environnement à jour et d'utiliser la version 18 (au moins). Attention
  • 5. 5 1 Install the project android-support-v7-appcompat in workspace as an Eclipse project: 1. Dans Eclipse New->Android Project From Existing Code. Choisir android-support-v7-appcompat (dans le dossier de android-sdkextrassupportv7). New->Android Project From Existing Code
  • 6. 6 1. Dans votre projet, toujours dans la fenêtre properties(ou BuildPath)->Android et ajoutez la lib support-v7 2 Bind it to your project
  • 7. <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.AppCompat" > <activity android:name="com.android2ee.formation.librairies.actionbar.compat.MainActivity" android:label="@style/Theme.AppCompat" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 7 Il en vous reste plus qu'à modifier le projet ainsi: Vous utiliser toujours les ActionBarActivity (au lieu des FragmentActivity) Votre Manifest doit avoir pour thème le thème Sherlock Manifest Utiliser toujours les ActionBarActivity Fondamental
  • 8. 8 Il en vous reste plus qu'à lancer votre projet SDK 4.2.2 Nexus4 SDK 2.3.3 Emulator
  • 9. 9
  • 10. @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_with_items, menu); return super.onCreateOptionsMenu(menu); } La principale fonctionalité est simple à mettre en place, à un détail, le name space pour le showAsAction. Java <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:actionbarcompat_mse="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/action_one" android:icon="@drawable/ic_action_one_inverse" android:orderInCategory="0" actionbarcompat_mse:showAsAction="always" android:title="One"/> <item android:id="@+id/action_two" android:icon="@drawable/ic_action_two_inverse" android:orderInCategory="0" actionbarcompat_mse:showAsAction="ifRoom" android:title="Two"/> <item android:id="@+id/action_settings" android:orderInCategory="100" actionbarcompat_mse:showAsAction="never" android:title="@string/action_settings"/> </menu> menuactivity_with_items.xml 10 SDK 4.2.2 Nexus4 SDK 2.3.3 Emulator
  • 11. https://github.com/excilys/androidannotations/wiki/WorkingWithThreads 11 SupportLib V18 Pas de construction dynamique pour l'instant. Attention Using XML attributes from the support library Notice that the showAsAction attribute above uses a custom namespace defined in the <menu> tag. This is necessary when using any XML attributes defined by the support library, because these attributes do not exist in the Android framework on older devices. So you must use your own namespace as a prefix for all attributes defined by the support library.
  • 12. Les ActionView permettent d'afficher une vue dans l'ActionBar quand l'utilisateur clique sur le MenuItem associé. 12 SDK 2.3.3 Emulateur L'EditText s'affiche et le bouton aussi L'appuie sur < affiche la vue (EDT+BTN) On rentre un message et on appuie sur le bouton La valeur de l'EDT s'affiche dans un Toast, l'ActionView est réduite
  • 13. <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:actionbarcompat_mse="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/menu_item_actionview" actionbarcompat_mse:actionLayout="@layout/actionview_view" actionbarcompat_mse:showAsAction="always|collapseActionView" android:icon="@drawable/ic_action_provider_extends" android:title="ActionView"/> <item android:id="@+id/action_one" actionbarcompat_mse:showAsAction="always" android:icon="@drawable/ic_action_one_inverse" android:orderInCategory="0" android:title="One"/> </menu> Trois fichiers sont nécessaires pour mettre en place une ActionView: du code Java, le fichier xml des MenuItem et le fichier des layouts de la vue affichant l'ActionView. menu/actionview.xml 13 Le fichier des menus déclarent l'ActionView en tant qu'icone à afficher sur la barre d'action. Le point crucial est le name space pour l'actionLayout qui est le même que pour la balise showAsAction. La balise actionLayout pointe vers le fichier de layout à utiliser quand la vue de l'ActionView s'affiche. Le mot clef collapseActionView permet de réduire automatiquement l'ActionView à la création.
  • 14. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center" android:focusable="true" > <EditText android:id="@+id/edtActionView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="12" android:hint="I am an EditText but I could be whatever" android:textSize="12sp" /> <ImageButton android:id="@+id/btnActionView" android:layout_width="32dip" android:layout_height="32dip" android:layout_gravity="center" android:adjustViewBounds="true" android:background="@drawable/ic_action_actionview_ok" android:scaleType="fitCenter" /> </LinearLayout> Le fichier des layouts est un fichier de layout normal. layout/actionview_view.xml 14
  • 15. MenuItem menuItemActionView; LinearLayout lilActionView; EditText edtActionView; ImageButton btnActionView; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.actionview, menu); menuItemActionView = menu.findItem(R.id.menu_item_actionview); lilActionView = (LinearLayout) MenuItemCompat.getActionView(menuItemActionView); edtActionView = (EditText) lilActionView.findViewById(R.id.edtActionView); btnActionView = (ImageButton) lilActionView.findViewById(R.id.btnActionView); btnActionView.setOnClickListener(new OnClickListener() { public void onClick(View v) {actionOfTheActionView();} }); return super.onCreateOptionsMenu(menu); } /** * Handling Action from the btnActionView contained by the ActionView */ private void actionOfTheActionView() { Toast.makeText(this, ActionView edt = "+edtActionView.getText().toString(), Toast.LENGTH_SHORT) .show(); MenuItemCompat.collapseActionView(menuItemActionView); } Enfin, en Java, il suffit de mettre en place la classe qui étend ActionProvider et qui décrit son comportement. ActionViewActivity.class 15
  • 16. public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.actionview, menu); menuItemActionView = menu.findItem(R.id.menu_item_actionview); // When using the support library, the setOnActionExpandListener() method is // static and accepts the MenuItem object as an argument MenuItemCompat.setOnActionExpandListener(menuItemActionView, new OnActionExpandListener() { @Override public boolean onMenuItemActionCollapse(MenuItem item) { // Do something when collapsed return true; // Return true to collapse action view} @Override public boolean onMenuItemActionExpand(MenuItem item) { // Do something when expanded return true; // Return true to expand action view} }); return super.onCreateOptionsMenu(menu);} Ajouter un Listener pour le changement d'état (collapse/expand) ActionViewActivity.class 16
  • 17. L'ActionMode permet de changer l'ActionBar normale en ActionBar d'actions pure. 17 ActionMode off ActionMode on SDK 2.3.3 Emulator SDK 2.3.3 Emulator
  • 18. import android.support.v4.app.NavUtils; import android.support.v7.app.ActionBarActivity; import android.support.v7.view.ActionMode; import android.support.v7.view.ActionMode.Callback; ... //To start the ActionMode mMode = startSupportActionMode(new Callback() { public boolean onPrepareActionMode(ActionMode mode, Menu menu) {return false;} public void onDestroyActionMode(ActionMode mode) {} public boolean onCreateActionMode(ActionMode mode, Menu menu) { getMenuInflater().inflate(R.menu.action_mode, menu); return true; } public boolean onActionItemClicked(ActionMode mode, MenuItem item) { mode.finish(); return true; } }); //To stop the ActionMode mMode.finish(); La principale fonctionalité est simple à mettre en place, à un détail, le name space pour le showAsAction. Java <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:actionbarcompat_mse="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/action_one" android:icon="@drawable/ic_action_one_inverse" android:orderInCategory="0" actionbarcompat_mse:showAsAction="always" android:title="One"/> <item android:id="@+id/action_two" android:icon="@drawable/ic_action_two_inverse" android:orderInCategory="0" actionbarcompat_mse:showAsAction="ifRoom" android:title="Two"/> <item android:id="@+id/action_settings" android:orderInCategory="100" actionbarcompat_mse:showAsAction="never" android:title="@string/action_settings"/> </menu> menuaction_mode.xml 18
  • 19. Merci à Jack Wharton pour sa librairie et ses exemples d'utilisation (que j'ai utilisé à fond pour le tuto d'ActionBarActivity) 19 Merci à eux. Vous pouvez migrer de la SherlockBar vers ActionBarActivity de manière transparente, sans modifier le code (ou presque). Fondamental Jake Wharton Chris Banes