Dialogue, Toasts, Boutons et Log

Android « Material Design » apporte quelques fonctionnalités intéressantes dont :

SnakeBar :

Remplace les « Toasts » en permettant d’afficher brièvement une information tout en autorisant de cliquer pour déclencher une action.

Pour l’utilisez ajouter dans le fichier buid.gradle (Module: app) paragraphe dependencies la ligne : implementation ‘com.android.support:design:xx.+’ où xx corresponds à la version de sdk utilisée dans « dependencies » exemple 26.

puis ajouter le code :

        Snackbar.make(findViewById(android.R.id.content), "Vous avez désactivé la permission",
                Snackbar.LENGTH_LONG).setAction("Paramètres", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                final Uri uri = Uri.fromParts("package", getApplicationContext().getPackageName(), null);
                intent.setData(uri);
                startActivity(intent);
            }
        }).show();

 

La durée d’affichage peut être : 

  1. LENGTH_INDEFINITE
  2. LENGTH_LONG
  3. LENGTH_SHORT

Références : https://guides.codepath.com/android/Displaying-the-Snackbar

https://blog.iamsuleiman.com/material-design-snackbar/

Forcer la saisie numérique dans un text view :

           tvTxtPrix  = (TextView) findViewById(R.id.Prixmaxi);  
           tvTxtPrix.setRawInputType(InputType.TYPE_CLASS_NUMBER);  

Pour créer et afficher une boite de dialogue (Alert) :

 AlertDialog.Builder alert = new AlertDialog.Builder(this);  
 alert.setTitle("Titre");  
 alert.setMessage("Message");  
 final EditText input = new EditText(this);  
 //-- Pour forcer la saisie numérique (à retirer pour la saisie de texte) 
 input.setInputType(InputType.TYPE_CLASS_NUMBER);   
 alert.setView(input);   
 //-- Traitement bouton Ok  
 alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {  
 public void onClick(DialogInterface dialog, int whichButton) {  
       Variable = (input.getText().toString());  
       //-- Traitemnt  
      });  
 //-- Traitement bouton annueler  
 alert.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {  
       public void onClick(DialogInterface dialog, int whichButton) {  
        // Annulation   
       }  
      });  
 //-- Nécessaire pour afficher la boite  
 alert.show();   

Pour quitter le layout si l’utilisateur appuie sur la touche retour :

  AlertDialog.Builder diagwindow = new AlertDialog.Builder(context);
  //-- Back key pressed
 diagwindow.setOnDismissListener(new OnDismissListener() {
 @Override
 public void onDismiss(DialogInterface dialog) {
 finish(); // to finish Activity on which dialog is displayed
 }
 }); 

Ou plus rapidement :

  new AlertDialog.Builder(MainActivity.this,R.style.AlertDialogCustom)  
           .setMessage(getResources().getString(R.string.lib_sup_all))  
           .setCancelable(false)  
           .setPositiveButton(getResources().getString(R.string.Button_Delete), new DialogInterface.OnClickListener() {  
             public void onClick(DialogInterface dialog, int id) {  
               //-- Action...  
               finish();  
             }  
           })  
           .setNegativeButton(getResources().getString(R.string.lib_non), null)  
           .show();  

Dans le cas d’une custom Dialog Box :

//-- Create a Custom Dialog component  
     final Dialog dialog = new Dialog(context);  
//-- tell the Dialog to use the dialog.xml as it's layout description  
     dialog.setContentView(R.layout.dialog);  
     dialog.setTitle("Titre");  
//-- when back-key is pressed on dialog  
     dialog.setOnDismissListener(new OnDismissListener() {  
     @Override  
     public void onDismiss(DialogInterface dialog) {  
                   finish();  //to finish Activity on which dialog is displayed                           
      }  
               });       

Pour une simple boite d’alerte avec l’icône de l’application :

       AlertDialog.Builder alert = new AlertDialog.Builder(this);   
       alert.setIcon(-1).(R.drawable.ic_launcher);  
       alert.setTitle("PAS DE MUSIQUE");   
       alert.setMessage("Téléchargez des musiques sur votre carte SD SVP !");    
       //-- Traitement bouton Ok   
       alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {   
       public void onClick(DialogInterface dialog, int whichButton) {   
            finish();  
          }});   
       //-- Nécessaire pour afficher la boite   
       alert.show();  

dans le cas ou l’icône est un drawable :

final Drawable dIco = new BitmapDrawable(getResources(),UtilityImg.getPhoto(FicIco));
alertFin.setIcon(-1).setIcon(dIco);

pour appliquer un style à l’alert box :

AlertDialog.Builder alertFin = new AlertDialog.Builder(MainActivity.this, R.style.AlertDialogCustom);

Boite de dialogue customisée avec icône et case à cocher :

  final Dialog dialog = new Dialog(AfficList.this);  
         dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON);  
         dialog.setContentView(R.layout.dialog_detail);  
         dialog.setTitle(name);  
         dialog.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, idIco); //R.drawable.icon  
         // set the custom dialog components - text, image and button  
         TextView textName = (TextView) dialog.findViewById(R.id.nomContact);  
         textName.setText(name);  
         TextView textNum = (TextView) dialog.findViewById(R.id.numContact);  
         textNum.setText(num);  
         final CheckBox checkBox = (CheckBox) dialog.findViewById(R.id.checkLog);  
         //  
         checkBox.setChecked(isLog);  
         //  
         Button dialogButtonOk = (Button) dialog.findViewById(R.id.btn_ok);  
         // if button is clicked, close the custom dialog  
         dialogButtonOk.setOnClickListener(new View.OnClickListener() {  
           @Override  
           public void onClick(View v) {  
             if(checkBox.isChecked())  
               //-- on enregistre que l'on ne veut pas les logs  
               DbHelper.updateContactLog(dbNumTel,nId,true);  
             else  
               DbHelper.updateContactLog(dbNumTel, nId, false);  
             cursor.requery();  
             todoAdapter.notifyDataSetChanged();  
             dialog.dismiss();  
           }  
         });  
         Button dialogButtonDelete = (Button) dialog.findViewById(R.id.btn_delete);  
         // if button is clicked, close the custom dialog  
         dialogButtonDelete.setOnClickListener(new View.OnClickListener() {  
           @Override  
           public void onClick(View v) {  
             if (DbHelper.deleteContact(dbNumTel, name)==1)  
             {  
               cursor.requery();  
               todoAdapter.notifyDataSetChanged();  
             }  
             dialog.dismiss();  
           }  
         });  
         dialog.show();  

Avec le Layout :

   
   
     
     
     
     
     
     
       
       
     
   

Exemple de boite de dialogue contenant une liste :

      //-- Ajout dans une playlist  
           static void AjoutPlayList(final String[] outputStrArr, final Context ctx) {  
                final PlaceDataSQL placeData;  
                final SQLiteDatabase dbMusiques;  
                 final CharSequence[] items;  
                 final ArrayList  tPlayList = new ArrayList();  
       //-- initialisation des variables  
             Date today = Calendar.getInstance().getTime();      
             final String DateJour=today.toString();  
             placeData = new PlaceDataSQL(ctx);          
             dbMusiques = placeData.getWritableDatabase();              
       //-- Remplissage du tableau des PlayList  
       tPlayList.clear();  
       Cursor c=PlaceDataSQL.getPistes(dbMusiques, "playlist", null);  
       if (c.getCount()>0)  
        {c.moveToFirst();  
        do {             
             tPlayList.add(c.getString(0));  
         }while (c.moveToNext());        
        //-- Affichage de la boite de sélection des PlayList  
        items = tPlayList.toArray(new CharSequence[tPlayList.size()]);        
        AlertDialog.Builder builder=new AlertDialog.Builder(ctx)   
             .setTitle("Choisissez une PlayList")   
             .setIcon(R.drawable.ic_launcher)  
             .setItems(items, new DialogInterface.OnClickListener()   
             {@Override   
                  public void onClick(DialogInterface dialog, int which)   
                  {for (int i=0; i<outputStrArr.length;i++)  
                                 PlaceDataSQL.onAjoutMusicPlayList(dbMusiques, tPlayList.get(which), outputStrArr[i],DateJour);  
                  }});   
        builder.create().show();  
             }c.close();   
            }  

Autres cas : http://tausiq.wordpress.com/2012/06/16/android-alertdialog-builder-example-code/

Dialog Box customisée :

1°) Ecrire un layout qui décrira la box :

   
   
     
     
     
       
       
     

Avec le fichier xml curve_shap dans drawable :

   
     
     
     
   

2°) Appel de la dialog box :

           // custom dialog  
           final Dialog dialog = new Dialog(this);  
           dialog.setContentView(R.layout.custom_dialog);  
           dialog.setTitle("Title...");  
           // set the custom dialog components - text, image and button  
           TextView text = (TextView) dialog.findViewById(R.id.txt_dia);  
           text.setText("Android custom dialog example!");  
           ;  
           Button dialogButton = (Button) dialog.findViewById(R.id.btn_yes);  
           // if button is clicked, close the custom dialog  
           dialogButton.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                     dialog.dismiss();  
                }  
           });  
           dialog.show();  

 Références :

http://examples.javacodegeeks.com/android/core/ui/dialog/android-custom-dialog-example/

http://androidexample.com/Custom_Dialog_-_Android_Example/index.php?view=article_discription&aid=88&aaid=111

Pour un message bref (Toast) :

Durée brève : Toast.makeText(MainActivity.this, « Message à afficher », Toast.LENGTH_SHORT).show();

Durée longue : Toast.LENGTH_LONG

Durée autre :

private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds

Pour afficher des messages dans la fenêtre LogCat d'Eclipse :
Log.i("message") 

Pour récupérer le click sur un bouton :

 public class Mtest extends Activity {  
  Button b1;  
  Button b2;  
  public void onCreate(Bundle savedInstanceState) {  
   ...  
   b1 = (Button) findViewById(R.id.b1);  
   b2 = (Button) findViewById(R.id.b2);  
   b1.setOnClickListener(myhandler1);  
   b2.setOnClickListener(myhandler2);  
   ...  
  }  
  View.OnClickListener myhandler1 = new View.OnClickListener() {  
   public void onClick(View v) {  
    // it was the 1st button  
   }  
  };  
  View.OnClickListener myhandler2 = new View.OnClickListener() {  
   public void onClick(View v) {  
    // it was the 2nd button  
   }  
  };  
 }  

Pour changer le texte d’un bouton : buttonTous.setText(« Tous »);

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Articles récents
Commentaires récents
fatima dans Bienvenue !
AdminDroid dans Bienvenue !
fatima dans Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :