Vous êtes sur la page 1sur 7

La mise en uvre d'Android Action Bar

Android Action Bar est utilis pour fournir la navigation et d'effectuer certaines actions. Dans ce
tutoriel, nous allons mettre en uvre une action simple Bar dans notre Application Android et
effectuer des actions telles que des fragments de commutation, la reconnaissance vocale.

Action bar sous whatsup android application

Cration du projet
Je me sers de studio Android IDE pour crer le projet. Crez une nouvelle application Android avec le
paquet comme example.cigma.androidactionbar et slectionnez le thme. galement crer comme
activit principale MainActivity et le layout principale activity_main.

Ajout d'action Bar Items


Utilis les icnes li avec ce lab.

Les lments Barre d'action devraient tre ajouts dans le fichier xml et places dans le dossier de
menu. Le fichier par dfaut est le menu. Chaque lment doit tre ajout avec balise <item>. Chaque
lment a son propre id. Le icon indique l'icne qui doit tre affich dans la barre d'action. Le
"title" spcifie le nom qui doit tre affich dans la barre d'action. Le "showAsAction" spcifie la
proprit d'affichage.
showAsAction = ifRoom Affiche lment dans la barre d'action si l'espace est disponible.
showAsAction = never Jamais affiche un objet en action bar

main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_speech"
android:icon="@drawable/ic_action_microphone"
android:showAsAction="ifRoom"
android:title="Speech"/>
<item android:id="@+id/action_call"
android:icon="@drawable/ic_action_call"
android:showAsAction="ifRoom"
android:title="Call"/>
<item android:id="@+id/action_done"
android:icon="@drawable/ic_action_done"
android:showAsAction="ifRoom"
android:title="Done"/>
<item android:id="@+id/action_contacts"
android:showAsAction="never"
android:title="Contacts"/>
<item android:id="@+id/action_settings"
android:showAsAction="never"
android:title="Settings"/>
<item android:id="@+id/action_status"
android:showAsAction="never"
android:title="Status" />
</menu>

Cration du Fragment Layouts


Note MainFragment a un TextView pour afficher le texte. Il sera ajout dynamiquement la mise en
page principale

main_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40dp"
android:text="Main Layout"/>
</LinearLayout>

Notre prochain fragment est un text_fragment qui a aussi un TextView pour afficher texte.

text_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40dp"
android:id="@+id/txt"/>
</LinearLayout>
Cration du Fragment Classes
Notre MainFragment extends to Fragment et utilise LayoutInflator pour afficher le layout.

MainFragment.java
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MainFragment extends Fragment {


@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_fragment, container,
false);

return view;
}

Notre TextFragment sera appele lorsque le bouton fait dans la barre d'action est press. Nous
rcuprons les arguments qui est pass en utilisant bundle et l'afficher dans TextView.

TextFragment.java
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class TextFragment extends Fragment {


TextView text;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.text_fragment, container,
false);
text= (TextView) view.findViewById(R.id.txt);
String menu = getArguments().getString("Menu");
text.setText(menu);
return view;
}

}
Cration du Main Layout
Notre main layout activity_main a une FrameLayout qui serait remplac dynamiquement en activit

activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</LinearLayout>

Cration du MainActivity et utilisation des Actions


Nous utilisons la mthode onCreateOptionsMenu () pour crer le menu Barre d'action et
MenuInflator pour afficher le menu.

Ensuite, nous utilisons la mthode onOptionsItemSelected () pour effectuer des actions pour les clics.
Nous obtenons l'id de l'article en utilisant la mthode GetItemID (). Nous Switch case ou vous pouvez
galement utiliser si else pour effectuer des actions. Lorsque les contacts, Paramtres, articles d'tat
sont presss, un toast est affich. Lorsque l'appel est appuy sur lintention de Dialer est ouvert.
Lorsque microphone icne est enfonce intention de reconnaissance vocale est ouvert pour obtenir
la voix en entre et le rsultat est affich dans Toast. Quand cela est fait est appuy sur la
MainFragment est remplac par TextFragment.

MainActivity.java

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragment main = new MainFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, main);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();
switch (id) {
case R.id.action_call:
Intent dialer= new Intent(Intent.ACTION_DIAL);
startActivity(dialer);
return true;
case R.id.action_speech:
Intent intent = new
Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(intent, 1234);

return true;
case R.id.action_done:

Bundle args = new Bundle();


args.putString("Menu", "You pressed done button.");
Fragment detail = new TextFragment();
detail.setArguments(args);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_fra
me, detail).commit();

return true;
case R.id.action_contacts:
Toast.makeText(getApplicationContext(),"Contacts
Clicked",Toast.LENGTH_SHORT).show();
return true;
case R.id.action_settings:
Toast.makeText(getApplicationContext(),"Settings
Clicked",Toast.LENGTH_SHORT).show();
return true;
case R.id.action_status:
Toast.makeText(getApplicationContext(),"Status
Clicked",Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent
data) {
if (requestCode == 1234 && resultCode == RESULT_OK) {
String voice_text =
data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS).get(0);
Toast.makeText(getApplicationContext(),voice_text,Toast.LENGTH_
LONG).show();

}
}
}

Cration du Manifest
Ajouter la permission suivante votre fichier AndroidManifest.xml pour effectuer l'opration de
reconnaissance vocale.
android.permission.INTERNET
Prises dcrans