[Tutoriel ] : Android SQLite [Simple]



www.tutozone.tn 



 Dans les applications android , on a besoin de stocker quelques données dans une base . Les tables que l’on créé avec SQLite doivent bien entendu être simple tout comme les requêtes que vous ferez dessus puisqu'il est le plus leger.

Pour notre exemple, nous allons créer une base de données avec une table pour enregistrer des aliments (Food). On va donc commencer doucement avec la création de la classe Food . D’ailleurs, dans ce tuto on ne va pas faire d’interface graphique, on va juste afficher les résultats de nos requêtes dans le logcat.

Un 'Food' est caractérisé par : 
  • int Id
  • String name 
  • Float price
  • int quantity

Maintenant , pour manipuler notre base (Création , ajout, suppression , mise-à-jour, retrouver des données ...) , on a besoin d'utiliser la classe SQLiteOpenHelper qui est une classe d’assistance pour gérer la création de bases de données et la gestion des versions.
On va créer une nouvelle classe SQLiteDatabaseHandler et qui « extends » de SQLiteOpenHelper. Cette classe va nous permettre de définir la table qui sera produite lors de l’instanciation de celle-ci , les opérations à faire (CRUD) (On peut modifier cette classe pour répondre à vos besoins ):

C'est presque terminé maintenant .Dans notre activité , on crée une instance de la classe SQLiteDatabaseHandler , et on fait appelle au fonctions qu'on a besoin :

A vous de tester . 

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] : Android GridView personnalisé [ Recherche & Animation]


www.tutozone.tn

On a vu la dernière fois comment afficher des informations dans une liste personnalisée avec ListView  ( Tuto ) .

[Tutoriel] : ListView personnalisée avec Images , textes [ filtrage ] sous Android

Cette fois, on va les afficher dans une autre façon : dans un GridView  .


www.tutozone.tn

Dans cette article , on va prendre , l'exemple du tutoriel de la ListView . On n'a pas grande chose à changer puisqu'ils sont de la même manière :
  1. On crée le projet android
  2. On ajoute une listView (ou GridView)
  3. On crée la layout d'un item 
  4. On crée notre Objet
  5. On crée l'adaptateur 
  6. Dans l'activité praincipale , on initialise la liste des données à afficher et la listView (ou GridView) ,et on ajoute les informations à l'aide de l'adapteur qu'on a  déja crée.
Les changements à faire par rapport à l'exmple de la listView sont :
  •  On ajoute un GridView à la layout principale:
  • On crée la layout d'un item :
  • Dans l'adaptateur : FoodListAdpater:
  • Dans l'activité principale :
www.tutozone.tn

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] : Android ListView avec Animations [ +Demos]

www.tutozone.tn


Suite au tutoriel précdedant concernant la personnalisation des ListViews :
nous allons voir comment ajouter des animations à notre liste des informations (UI) .
Voici un avant goût .. 

www.tutozone.tn
Animer une ListView
Pour le code finale , il est disponible sur mediafire:
 
www.tutozone.tn
Code final

Pour aboutir à ce résultat, il faut bien suivre le tutoriel déjà cité.
L'idée générale c'est qu'on va appliquer les animations , ecrites en xml dans le dossier res/anim/ , aux items de la liste dans l'adaptateur de la ListView dans la classe 'FoodListAdapter'.
Avant tout , on va ajouter les fichiers xml d'animations dans le soosier res/anim (on le crée s'il n'existe pas) :
  •  Effet "fade in": fade_in.xml
< alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="100"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" / >

www.tutozone.info
Démo Effet Fade in
  •  Effet "Push left in" : push_left_in.xml

< set xmlns:android="http://schemas.android.com/apk/res/android">
   < translate android:fromXDelta="100%p" android:toXDelta="0"
         android:duration="300" />
   < alpha android:fromAlpha="0.0" android:toAlpha="1.0"
         android:duration="300" />
< /set>

www.tutozone.info
Démo Effet Push left in
  • Effet "Push up in" : push_up_in.xml :
< set xmlns:android="http://schemas.android.com/apk/res/android">
   < translate android:fromYDelta="100%p" android:toYDelta="0"
          android:duration="500"/>
   < alpha android:fromAlpha="0.0" android:toAlpha="1.0"
          android:duration="500" />
< /set>

www.tutozone.info
Démo Effet Push up in
  • Effet "Slide in Top" : slide_in_top.xml :
< set xmlns:android="http://schemas.android.com/apk/res/android" >
    < translate
        android:duration="1000"
        android:fromYDelta="-100%p"
        android:toYDelta="1" />
< /set>

www.tutozone.info
Démo Effet slide in top

Et il y'a d'autres effets téléchargeable ici (dossier anim , mettez le dans res/ )



https://www.mediafire.com/?t5w2bimc24iht0x
Animations xml


Passons maintenant à notre classe adaptateur (FoodListAdapter), on ajoute deux variables gloabales:
private List listFood = null;
 LayoutInflater layoutInflater;
    Context context; // nouvel
    private int lastPosition = -1; //nouvel
    
 // constructeur
 public FoodListAdapter(Context context, List listFood) {
  this.listFood = listFood;
  layoutInflater = LayoutInflater.from(context);
  this.listFood = listFood;
  this.context=context; //nouvel

 }

Pour appliquer les animations en modifie la méthode getView() en ajoutant :

@Override
 public View getView(int position, View convertView, ViewGroup parent) {
         .... 
Animation animation = AnimationUtils.loadAnimation(context, (position >lastPosition) 
    ? R.anim.up_from_bottom : R.anim.up_from_bottom);
  convertView.startAnimation(animation);
     lastPosition = position;
  return convertView;

 }

Et on change R.anim.up_from_bottom par l'effet desiré ou bien on applique 2 effets.

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] : Android ListView personnalisée [ +Recherche ]

Article par Zied Rebhi:


Bienvenue à tous , dans cet article on va voir comment personnaliser une ListView.
La ListView peut comporter plusieurs types de données : Images , Textes etc.
Dans ce tutoriel on va vous montrer comment on crée une ListView avec des images et textes .
On  prend comme exemple : une application pour un restaurant (Food &amp;amp; Drinks).


Notre application va afficher des aliments avec leurs images , leurs noms et leurs prix .Donc un aliment (Food) est caractérisé par : 
  • name: String
  • price: float
  • picture: Drawable (Image)
==&amp;gt; Besoin d'une classe Food (objet)

import android.graphics.drawable.Drawable;

public class Food {
 int id;
 String name;
 Drawable picture;
 float price;

 public Food(int id, String name, Drawable picture, float price) {
  super();
  this.id = id;
  this.name = name;
  this.picture = picture;
  this.price = price;
 }

 public Food() {
  super();
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Drawable getPicture() {
  return picture;
 }

 public void setPicture(Drawable picture) {
  this.picture = picture;
 }

 public float getPrice() {
  return price;
 }

 public void setPrice(float price) {
  this.price = price;
 }

 @Override
 public String toString() {
  return "Food [id=" + id + ", name=" + name + ", picture=" + picture
    + ", price=" + price + "]";
 }

}



Pour afficher les listes des aliments on va créer ajouter une ListView à notre layout activity_main, et pour ajouter la fonction du recherche on ajouter un EditText: activity_main.xml :

 < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    < EditText
        android:id="@+id/search"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Search something.." />
        
    < /EditText>

    < ListView
        android:id="@+id/listFood"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
   < /ListView >

< /LinearLayout>

Maintenant , pour qu'on puisse bien afficher la liste des informations on veut , on va presenter comment une ligne de la liste sera affiché dans la ListView, pour cela  on crée un  fichier xml sous /layout: food_row.xml :

 < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="5dip" >

    < LinearLayout
        android:id="@+id/thumbnail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="5dip"
        android:padding="3dip" &amp;gt;

        &amp;lt; ImageView
            android:id="@+id/picture"
            android:layout_width="50dip"
            android:layout_height="50dip" />
    < / LinearLayout >

    < TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/price"
        android:layout_toRightOf="@+id/thumbnail"
        android:text="name"
        android:textColor="#040404"
        android:textSize="15dip"
        android:textStyle="bold"
        android:typeface="sans" />

    < TextView
        android:id="@+id/price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="14dp"
        android:gravity="right"
        android:text="price"
        android:textColor="#ea5178"
        android:textSize="10dip"
        android:textStyle="bold" />

< / RelativeLayout>


Passons à la programmation java alors , on a déja ecrit la classe Food pour les objets , maintenant on va créer un adaptateur pour afficher les données convenablement dans la ListView: On crée une classe "FoodListAdapter" qui étend de la classe "BaseAdapter" :
public class FoodListAdapter extends BaseAdapter {

 private List listFood = null;
 LayoutInflater layoutInflater;

 // constructeur
 public FoodListAdapter(Context context, List listFood) {
  this.listFood = listFood;
  layoutInflater = LayoutInflater.from(context);
  this.listFood = listFood;

 }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return listFood.size();
 }

 @Override
 public Object getItem(int position) {
  // TODO Auto-generated method stub
  return listFood.get(position);
 }

 @Override
 public long getItemId(int arg0) {
  // TODO Auto-generated method stub
  return arg0;
 }

 static class ViewHolder {
  TextView nomView;
  TextView priceView;
  ImageView pictureView;

 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  ViewHolder holder;

  if (convertView == null) {
   convertView = layoutInflater.inflate(R.layout.food_row, null);
   holder = new ViewHolder();
   // initialisation des vues
   holder.nomView = (TextView) convertView.findViewById(R.id.name);
   holder.priceView = (TextView) convertView
                                        .findViewById(R.id.price);
   holder.pictureView = (ImageView) convertView
     .findViewById(R.id.picture);

   convertView.setTag(holder);
  } else {
   holder = (ViewHolder) convertView.getTag();
  }
  // affchier les données convenablement dans leurs positions
  holder.nomView.setText(listFood.get(position).getName());
  holder.priceView.setText(String.valueOf(listFood.get(position)
    .getPrice()) + " $");
  holder.pictureView.setBackgroundDrawable(listFood.get(position)
    .getPicture());
  return convertView;

 }
}

Passons à notre activity :Toute est prét !
On va initialiser une liste avec des objets de type Food , pour cela on a besoin:
  • Drawable[] listPictures: des images des aliments (ajoutées dans le dossier /drawable) téléchargeable ici
https://www.mediafire.com/?3ypo4awt3hm3t73
Télécharger les Images

  • Float[] listPrices: liste des prix
  • String[] listNames: liste des noms à ajouter
Voici la liste des variables globales qu'on va les utiliser :
 String[] listNames = { "Cake", "Cheese", "Chicken", "Cocktail", "Coffe",
   "Coffe black", "Humberger", "IceCream", "Pizza", "Sandwich",
   "Soupe", "Yaghurt" };

 Float[] listPrices = { (float) 1.5, (float) 1.4, (float) 4.3, (float) 1.8,
   (float) 0.7, (float) 0.650, (float) 1.7, (float) 1.200,
   (float) 4.500, (float) 2.500, (float) 2.8, (float) 0.500 };

 ArrayList listFood;
 ListView lv;
 EditText search;


Pour la fonction du recherche et filtrage on va ajouter une fonction filtrer () qu'on l'appelle lorsque il y a un changement dans l'EditText : "addTextChangedListener":


 public void filtrer() {
  // retourner la chaine saisie par l'utilisateur
  String name = search.getText().toString();
  // créer une nouvelle liste qui va contenir la résultat à afficher
  ArrayList listFoodNew = new ArrayList();
  
  for (Food food : listFood) {
   // si le nom du food commence par la chaine saisie , ajouter-le !
   if (food.getName().toLowerCase().toString().startsWith(name)) {
    listFoodNew.add(food);
   }
  }
  //vider la liste
  lv.setAdapter(null);
  // ajouter la nouvelle liste
  lv.setAdapter(new FoodListAdapter(getApplicationContext(), listFoodNew));
 }

Le code finale de notre activité sera :
@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_food);
  lv = (ListView) findViewById(R.id.listFood);
  search = (EditText) findViewById(R.id.search);
  Drawable[] listPictures = {
    getResources().getDrawable(R.drawable.cake),
    getResources().getDrawable(R.drawable.cheese),
    getResources().getDrawable(R.drawable.chicken),
    getResources().getDrawable(R.drawable.cocktail),
    getResources().getDrawable(R.drawable.coffe),
    getResources().getDrawable(R.drawable.coffeblack),
    getResources().getDrawable(R.drawable.hamburger),
    getResources().getDrawable(R.drawable.icecream),
    getResources().getDrawable(R.drawable.pizza),
    getResources().getDrawable(R.drawable.sandwich),
    getResources().getDrawable(R.drawable.soup),
    getResources().getDrawable(R.drawable.yoghurt) };

  listFood = new ArrayList();

  for (int i = 0; i &amp;lt; listPictures.length; i++) {
   listFood.add(new Food(i + 1, listNames[i], listPictures[i],
     listPrices[i]));
  }

  lv.setAdapter(new FoodListAdapter(getApplicationContext(), listFood));
  search.addTextChangedListener(new TextWatcher() {

   @Override
   public void onTextChanged(CharSequence arg0, int arg1, int arg2,
     int arg3) {
    // TODO Auto-generated method stub

   }

   @Override
   public void beforeTextChanged(CharSequence arg0, int arg1,
     int arg2, int arg3) {
    // TODO Auto-generated method stub

   }

   @Override
   public void afterTextChanged(Editable arg0) {
    // TODO Auto-generated method stub
    filtrer();
   }
  });

 }

On obtient comme résultat :




Pour le code finale , il est disponible sur mediafire:


Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tips]: Formater un code sous eclipse


Pour bien formater un code sous eclipse il faut juste aller au menu :
 menu > Source > Format
ou bien  :

Ctrl + Shift + F

résultat : code bien formaté !

Web Service SOAP sous Android [ Partie 1 / 2 ]

Bienvenue à tous , dans ce tutoriel on va va comment créer un webservice SOAP avec C# et comment on va le consommer avec Android.

Un web service permet la communication et l’échange de données entre une application et un système via internet. SOAP (Simple Object Access Protocol) est un protocole réseau permettant de faire des appels de procédures sur une machine distante à l’aide d’un serveur d’application.

On va créer une simple application qui affiche une liste de clients [id,name,salary] , avec une simple recherche (filtrage selon le nom [name] et le salaire [salary]).

1. Environnement du travail
Web service Asp.net [c#]:
  • Visual studio
  • IIS Server  
Android [Java] :

   2. Création , publication et le test du service web SOAP:
 Commençant par la création et la publication du webservice.(Pour plus de details visitez cet article sur codeproject.com) .
On va créer un webservice avec deux methodes :
  1. getAllClients(): retourne une liste des clients
  2. getClientsSalary(float a, float b) : retourne la liste des clients dont le salaire est entre a et b (a< Client.salary
 On va créer une méthode initialisation pour initialiser notre liste des clients (d'objet Client)
  • Exécuter Visual Studio et créer un nouveau application de web service: TutoZoneWebServiceSoap
Création du projet
Arborescence du projet


  •  Dans le fichier Serrvice1.asmx, vous allez trouver une fonction hello World:

  • On va créer notre objet Client (id, name ,salary):

  • Remplaçons maintenant la fonction Hello world par :

  • Testons alors notre web service: Générer  puis  publier.
  •  Voici les étapes de la publication
 
Résultat de la publication

Enfin on publie le webservice pour le tester (Exécuter):
  • On accéde à http://localhost/TutoZoneTuto/ :
Resultat

Si on accede à la methode getAllClients : http://localhost/TutoZoneTuto/Service1.asmx/getAllClients:
 
Retour du fonction

3. Partie Android:  Utilisation du service web SOAP:
On va voir cette partie dans la 2 éme partie de ce tutoriel .

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] :Envoyer un email depuis une application Android

Dans certaines applications , on a besoin d'intégrer un module d’envoi des courriels (Feedbacks , informations etc. ). En Android , il est simple de faire ça. 

#1. La Méthode:
Pour envoyer un émail depuis une application Android ,on a besoin de connaitre :
  • Destinataire
  • Destinataire en Cc (copie conforme)(Facultative)
  • Destinataire  en Cci (copie conforme invisible) (Facultative)
  • Objet d’émail
  • Message d’émail
  • Pièce jointe
Puis on utilise ce code :

String to = "email de destinataire";
  String subject = "objet d'email";
  String message = "message";
  String toCc = "email de destinataire en CC";
  String toCci = "email de destinataire en CCi";
  Intent email = new Intent(Intent.ACTION_SEND);
  email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to});
  //email.putExtra(Intent.EXTRA_CC, new String[]{ toCc});
  //email.putExtra(Intent.EXTRA_BCC, new String[]{toCci});
  //email.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/file.pdf");
  email.putExtra(Intent.EXTRA_SUBJECT, subject);
  email.putExtra(Intent.EXTRA_TEXT, message);
   
  email.setType("message/rfc822");
    
  startActivity(Intent.createChooser(email, "Choisissez un client
                de messagerie:"));

#2. Exemple:
Pour bien comprendre , on va appliquer la méthode déjà écrite dans une application.On crée un nouveau projet Android:
Application Name: Email Android Exemple
Package Name :com.tutozone.emailandroid
Activity Name: SendEmailActivity

Dans la layout "main.xml" , on crée 3 "EditText" et 1 bouton

< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    < TextView
        android:id="@+id/textViewPhoneNo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="To : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    < EditText
        android:id="@+id/editTextTo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress" >

        
    < /EditText>

    < TextView
        android:id="@+id/textViewSubject"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Subject : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    < EditText
        android:id="@+id/editTextSubject"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         >
    < /EditText>

    < TextView
        android:id="@+id/textViewMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Message : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    < EditText
        android:id="@+id/editTextMessage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:inputType="textMultiLine"
        android:lines="5" />

    < Button
        android:id="@+id/buttonSend"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Send" />

< /LinearLayout>

Maintenant dans l'activité principale "SendEmailActivity.java", on va mettre le code d'envois dans une methode , et on l'appelle lors de l'action du bouton:
public class SendEmailActivity extends Activity {
 
 Button buttonSend;
 EditText textTo;
 EditText textSubject;
 EditText textMessage;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
 
  buttonSend = (Button) findViewById(R.id.buttonSend);
  textTo = (EditText) findViewById(R.id.editTextTo);
  textSubject = (EditText) findViewById(R.id.editTextSubject);
  textMessage = (EditText) findViewById(R.id.editTextMessage);
 
  buttonSend.setOnClickListener(new OnClickListener() {
 
   @Override
   public void onClick(View v) {
 
     sendEmail();
   }
  });
 }
 
 public void sendEmail()
 {
  String to = textTo.getText().toString();
  String subject = textSubject.getText().toString();
  String message = textMessage.getText().toString();
  //String toCc = "email de destinataire en CC";
  //String toCci = "email de destinataire en CCi";
  Intent email = new Intent(Intent.ACTION_SEND);
  email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to});
  //email.putExtra(Intent.EXTRA_CC, new String[]{ toCc});
  //email.putExtra(Intent.EXTRA_BCC, new String[]{toCci});
  //email.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/file.pdf");
  email.putExtra(Intent.EXTRA_SUBJECT, subject);
  email.putExtra(Intent.EXTRA_TEXT, message);
   
  email.setType("message/rfc822");
    
  startActivity(Intent.createChooser(email, "Choisissez un client
                  de messagerie:"));
 }
}

#3. Test:
Si vous testez l'application dans un émulateur , un erreur s'affiche:“No application can perform this action“.
Erreur dans l'émulateur
 Si vous testez dans une appareil réel , l’émail sera envoyé.
#4. Code complet:
Le code de notre application se trouve dans le site GitHub.
Code source
Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.
 

[Tutoriel] : Afficher une image à partir un URL en Android



Dans ce tutoriel , nous allons voir comment afficher une image dans notre application à partir une image stocké dans le web. Parmi les contraintes du système Android est la mémoire. Donc si on a plusieurs images à utiliser dans notre application , on les stocke dans un serveur d'images et on les récupére via leurs emplacements.
On va tester avec une seule image qui sera afficher dans un "ImageView" .
Il y en a plusieurs méthodes pour faire ça mais la meilleur c'est d'utiliser AsyncTask (Éviter le traitement lourd à l'application)

#1. Création d'une application Android:
Application Name: Loading Picture Android Url
Project Name: LoadingPictureAndroidUrl
Package Name :com.tutozone.loadingpictureandroidurl
Activity Name: MainActivity

Création d'un nouveau projet Android
On va ajouter un "ImageView" dans la layout de notre activité.
< ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
       />


Dans notre application, on a besoin de la permission "INTERNET", donc on ajoute la permission dans le fichier "AndroidManifest.xml"
< uses-permission android:name="android.permission.INTERNET"/>

Passons à notre activité maintenant ,on va créer une classe privé (à la fin de notre activité) qui étend de "AsyncTask" dont on ajoute un "ImageView" dans sa constructeur.

// AsyckTask to download image (url given )
 private class DownloadImageTask extends AsyncTask {
    ImageView bmImage;
    
    //constructor
    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }
    
    // laoding picture and put it into bitmap 
    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
          InputStream in = new java.net.URL(urldisplay).openStream();
          mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }
    
    //after downloading
    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
  }

Pour tester l'asyncTask , on crée une instance dans la méthode onCreate() en passant l'imageView et l'url d'image à afficher .
// here we will load the picture into the imageView
new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
     .execute("http://img4.hostingpics.net/pics/118117logoCopie.png");

#2. Résultat: 
 Vous pouvez mettre n'importe quel URL d'image dans le code  et après l'exécution voici le résultat:
Chargement d'image dans l'imageView à partir un URL
#3. Code complet:

Comme d’habitude , le code de notre application se trouve dans le site GitHub.
 
Code source

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] : Développer des applications Android 'multilingues'

Article par Zied Rebhi:
Dans ce tutoriel , nous allons voir comment créer une application Android multilingues (Supporte plusieurs langages) afin de viser le maximum des utilisateurs.

#1. Conseils:
La première chose à retenir est d'éviter d'écrire un texte dans le code (xml ou java : Les messages, valeurs des TextViews etc.) et utiliser à la place le fichier 'strings.xml' dans le dossier 'res/values'. Pour chaque langue, nous devons avoir un fichier 'string.xml' qui sera inséré dans son dossier correspondant (à la langue).Par exemple pour la langue française on crée un dossier 'values-fr' et on crée un fichier 'strings.xml'. Le système Android va faire le reste : Détecter la langage locale du smartphone récupère les informations du fichiers.
 
Structure du projet
Par défaut , les chaines de caractères dans le fichier 'values/strings.xml' sont en anglais. Donc pour que notre application soit multilingue ,il faut traduire les mêmes mots et on les mettent dans chaque fichier du langue correspondant.

#2. Exemple:
Supposons qu'on a une application  qui doit être Anglais/Français. Donc on le dossier initial 'res/values' , et on crée un autre dossier 'values-fr' et on crée un fichier 'strings.xml'. Notre application a un bouton de vérification (Check == Vérifier) et un message dans un TextView (Good Morning == Bonjour).

Alors ,dans le fichier 'values/strings.xml' on a:

< resources>
    < string name="app_name">My App< /string>
    < string name="action_settings">Settings< /string>
    < string name="hello_world">Hello world!< /string>
    < string name="btnCheck">Check< /string>
    < string name="msg">Good Morning< /string>
</ resources>

Et dans 'values-fr/strings.xml' on met:
< resources>
    < string name="app_name">Mon App< /string>
    < string name="action_settings">Paramétres< /string>
    < string name="hello_world">Hello world!< /string>
    < string name="btnCheck">Vérifier< /string>
    < string name="msg">Bonjour< /string>
</ resources>
Comme ça , notre application est multilingue.

#3. Coté code:
Dans le code de l'application à plusieurs langues , nous devons faire comme suit (Java et xml ):
- XML code:
< Button
     android:layout_width=”wrap_content”
     android:layout_height=”wrap_content”
     android:text=”@string/btnCheck” />  
Ce bouton va avoir soit 'Vérifier' ou 'Check'  comme nom selon la langue.

- Java code:
String msgText= getResources().getString(R.string.msg); 
Cette variable va avoir soit 'Bonjour' ou 'Good morning'.
Voici quelques codes ISO pour les langues:
Android Localization Language ISO Codes

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] : Vérification de la connexion réseau dans une application Android

  
En Android, on remarque qu'il y a beaucoup d'applications qui utilisent le réseau pour se communiquer . D’où l'importance de vérification de la disponibilité du réseau avant de commencer le traitement dans notre application (Envoie, récupération des données par exemple).
Donc cet article on va vous montrer comment vérifier la connexion réseau en Android de notre application. En faite , il existe plusieurs méthodes , nous allons les voir ensemble.

#1. Création d'une application Android:
Application Name: Check Network Connectivity 
Project Name: CheckNetworkConnectivity
Package Name :com.tutozone.checknetworkconnectivity
Activity Name: MainActivity
Création d'un nouveau projet Android


Après la création du projet , notre allons construire une simple application contenant une activité avec un bouton. On va vérifier la connexion réseau lors du clique sur le bouton. Pour le test , je vous conseille d'utiliser l'émulateur rapide de Genymobile (Genymotion) :Genymotion: Émulateur rapide et facile pour Android : Installation et intégration [Tutoriel].

Passons maintenant à notre activité ActivityMain.xml, nous allons créer 3 variables (une chaine de caractères, un bouton et un TextView et 2 méthodes (deux versions de vérification du réseau):
public class MainActivity extends Activity {

 String msg;
 TextView msgTxtView;
 Button btnCheck;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //Initialization
  
  msgTxtView=(TextView)findViewById(R.id.txtMsg);
  btnCheck=(Button)findViewById(R.id.btnCheck);
  btnCheck.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    isConnected(); //or checkConnectivity();
   }
  });
  
 }
        //the 2 methods
      }

#. Méthode 1 : 
Pour la première méthode nous allons vérifier la connexion selon le type (Wifi , Données mobile), un message sera affiché.
public void checkConnectivity(){
  ConnectivityManager cm = (ConnectivityManager) getApplicationContext()
    .getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
  if (null != activeNetwork) {
            if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
             msg="You are connected to a WiFi Network";
            if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
             msg="You are connected to a Mobile Network";
            }   
  else
   msg = "No internet Connectivity";
  
   msgTxtView.setText(msg);
 }

#. Méthode 2 : 
 Dans cette méthode , on va retourner un boolean qui est le résultat de notre test, et selon le résultat , on procède notre traitement:
public  boolean isConnected() {
  ConnectivityManager cm = (ConnectivityManager) getApplicationContext()
    .getSystemService(Context.CONNECTIVITY_SERVICE);
   // test
   if (cm.getActiveNetworkInfo() != null
     && cm.getActiveNetworkInfo().isAvailable()
     && cm.getActiveNetworkInfo().isConnected()) {
    
   msg="You are connected to a Network";
   msgTxtView.setText(msg);
   return true;
   } else {
    
    msg = "No internet Connectivity";
    msgTxtView.setText(msg);
    return false;
   }
  }

 #2. Remarque :
S'il vous plaît ne pas oublier d'ajouter les permissions nécessaires dans le fichier AndroidManifest.xml.
 
 


#3. Code finale:
Après la compilation et l'exécution de notre projet voici le résultat finale :

Pas de connexion réseau
Connexion à un Wifi

Pour le code vous le trouverez ici (dans le GitHub)

Code source
Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.