Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Réaliser un didacticiel

Au premier démarrage

Sujet résolu
    18 décembre 2014 à 22:30:51

    Bonjour,

    Je cherche à réaliser un didacticiel avec des images et du texte sous la forme d'un slider qui apparaitrait au tout premier démarrage de l'application pour expliquer le fonctionnement de celle-ci.

    Ce serait un vue où l'on fait défiler des étapes par doigt glissé et ça viendrait se mettre par dessus l'application au premier démarrage de celle-ci.

    J'ai du mal à trouver la marche à suivre dans mon moteur de recherche.

    Pouvez-vous m'aider si vous connaissez un tutoriel qui explique cela ou alors si vous l'avez déjà fait dans l'une de vos applications ?

    Je vous en remercie d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      19 décembre 2014 à 0:39:55

      Ba déja 

      ça viendrait se mettre par dessus l'application au premier démarrage de celle-ci.

      utilise un sharedpreferences en boolean ou tu mettras true après le tutoriel

      Et ensuite pour le tuto en lui meme t'as 2 choix : soit tu fais 1 vue / étape avec un bouton next 

      Soit (ce qui me semble + dans ce que tu veux faire ) tu fais un viewpager

      • Partager sur Facebook
      • Partager sur Twitter
      The people who are crazy enough to think they can change the world, are the ones who do.
        20 décembre 2014 à 11:56:35

        Je me suis renseigné dans la doc pour le viewpager et premièrement je n'arrive pas à l'implémenter :

        Il ne trouve pas les class renseignées ici :

                mTabsAdapter = new TabsAdapter(this, mViewPager);

                mTabsAdapter.addTab(bar.newTab().setText("Simple"),

                        CountingFragment.class, null); --> Cannot be resolved to a type

                mTabsAdapter.addTab(bar.newTab().setText("List"),

                        FragmentPagerSupport.ArrayListFragment.class, null); --> Cannot be resolved to a type

                mTabsAdapter.addTab(bar.newTab().setText("Cursor"),

                        CursorFragment.class, null); --> Cannot be resolved to a type

        Ici il ne trouve pas le constructeur :

                public TabsAdapter(Activity activity, ViewPager pager) {

                    super(activity.getFragmentManager()); --> The constructor is undefined

                    mContext = activity;

                    mActionBar = activity.getActionBar();

                    mViewPager = pager;

                    mViewPager.setAdapter(this);

                    mViewPager.setOnPageChangeListener(this);

                }

        Deuxièmement, je ne penses pas que c'est ça dont j'ai besoin. Voici un schéma de ce que je veux que j'ai déjà vu dans plusieurs applications :

        Je suis débutant en Android et ça me parait bien compliqué :(

        EDIT (13:17) :

        J'ai trouvé un didacticiel sur comment faire un didacticiel : http://fr.slideshare.net/preemptif/page-viewer

        Cependant reste à savoir comment il a conçu les class Fragment1,2,3.

        Rien à ce sujet dans le didacticiel, je suppose qu'il a utilisé le principe du polymorphisme pour retourner un objet "Fragment" que ce soit un objet "Fragment1", "Fragment2" ou "Fragment3".

        Et je penses être complètement à côté de la plaque en ayant créé une activité pour les Fragments :

        public class Fragment1 extends FragmentActivity {
        
        
        
        	@Override
        
        	protected void onCreate(Bundle savedInstanceState) {
        
        		super.onCreate(savedInstanceState);
        
        		setContentView(R.layout.layout_fragment1);
        
        	}
        
        }



        -
        Edité par Niko300 20 décembre 2014 à 13:21:34

        • Partager sur Facebook
        • Partager sur Twitter
          20 décembre 2014 à 17:11:39

          Non c'est bien un viewpager pour faire ce que tu veux ^^ ça permet de slider entre les pages, t'as qu'à chercher viewpager dans google image il y a des exemples.

          et ton viewpager va utiliser des fragments

          Par contre c'est assez compliqué à mettre en place

          en gros pour résumé il te faut : ton activité principale qui extends FragmentActivity et dans laquelle tu va déclarer ton pager :

          MyPagerAdapter adapter;
          ViewPager pager;
          // récupéré la vue du xml (je te montre comment le déclarer plus bas
          pager = (ViewPager) findViewById(R.id.myviewpager);
          adapter = new MyPagerAdapter(this, this.getSupportFragmentManager());
          pager.setAdapter(adapter);
          pager.setOnPageChangeListener(adapter);
          pager.setCurrentItem(0); // définir le démarrage sur la première page
          pager.setOffscreenPageLimit(3);
          pager.setPageMargin(size); // margin entres les diffèrents fragment

          tu va dans le xml que ton activité affiche et tu déclare ton pager :

            <android.support.v4.view.ViewPager
                      android:id="@+id/myviewpager"
                      android:layout_width="fill_parent"
                      android:layout_height="fill_parent"
                      android:layout_gravity="center"
                      android:overScrollMode="never" />

          et ensuite t'as 2 autres class :

          public class MyPagerAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {

          public class MyFragment extends Fragment {

          Je peux pas copier tout le code parce que y a des centaines de lignes :D 

          mais en gros ça doit ressembler à ça 

          Si tu n'y arrive pas je peux t'envoyer directement le code fait et t'expliquer quoi changer; 

          La première fois j'avais trouvé le code sur internet donc :-°



          • Partager sur Facebook
          • Partager sur Twitter
          The people who are crazy enough to think they can change the world, are the ones who do.
            20 décembre 2014 à 19:34:03

            C'est vraiment gentil de vouloir continuer à m'aider mais j'avais finalement réussis à "concevoir" le code des class Fragment qui me manquait (sujet résolu).

            Je pensais que ce n'était pas la bonne méthode parce que je croyais que le contrôleur gérait automatiquement les petits points.

            package com.niko300.****;
            
            
            
            import android.graphics.Typeface;
            
            import android.os.Bundle;
            
            import android.support.v4.app.Fragment;
            
            import android.view.LayoutInflater;
            
            import android.view.View;
            
            import android.view.ViewGroup;
            
            import android.widget.TextView;
            
            
            
            public class Fragment1 extends Fragment {
            
            
            
                // newInstance constructor for creating fragment with arguments
            
                public Fragment1() {
            
                  
            
             
            
                }
            
            
            
                // Store instance variables based on arguments passed
            
                @Override
            
                public void onCreate(Bundle savedInstanceState) {
            
                    super.onCreate(savedInstanceState);
            
                    
            
            
            
            
            
                }
            
            
            
                // Inflate the view for the fragment based on layout XML
            
                @Override
            
                public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            
                    View view = inflater.inflate(R.layout.layout_fragment1, container, false);
            
                    return view;
            
                }
            
            }

            Il ne me reste plus qu'à gérer la variable sharedpreference mais surtout avant, d'adapter le pageViewer à tous les écrans du monde entier :'(

            -
            Edité par Niko300 20 décembre 2014 à 19:36:39

            • Partager sur Facebook
            • Partager sur Twitter
              20 décembre 2014 à 20:21:05

              Rien n'est automatique ^^

              Si t'as d'autres problèmes hésite pas en tout cas :)

              • Partager sur Facebook
              • Partager sur Twitter
              The people who are crazy enough to think they can change the world, are the ones who do.
                24 décembre 2014 à 12:31:35

                J'ai un nouveau problème, bien que j'ai terminé l'interface ; ce qui me semblait simple (les variables de préférences) ne fonctionne pas dans mon code.

                Voici mon code :

                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.activity_slider);  
                
                        SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
                        editor.putString("slider", "OFF");       
                        editor.apply();

                (Méthode onCreate() du Slider)

                 




                 

                	       super.onCreate(savedInstanceState);
                		
                	       SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
                	       String sliderLottoSimulatorKey = "slider";      
                		
                		if (prefs.getString(sliderLottoSimulatorKey, "ON").equals("ON"))
                		{
                			
                		      Intent intent = new Intent(getApplicationContext(),SliderActivity.class);
                	    	      startActivity(intent);
                			
                		}	

                (Méthode de l'activité principale)

                De l'aide serait la bienvenue.


                -
                Edité par Niko300 24 décembre 2014 à 12:32:14

                • Partager sur Facebook
                • Partager sur Twitter
                  24 décembre 2014 à 17:13:58

                  Essai comme ça :

                  SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
                  SharedPreferences.Editor editor = preferences.edit();
                  editor.putString("slider","OFF");
                  editor.commit();


                  et pour récupérer :

                  SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
                  String var = preferences.getString("slider");

                  PS : Si tu utilise que ON/OFF tu peux prendre un boolean au lieu d'un string.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  The people who are crazy enough to think they can change the world, are the ones who do.
                    24 décembre 2014 à 17:54:45

                    Ca fonctionne !

                    Merci beaucoup pour ton aide !

                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 décembre 2014 à 12:36:08

                      Est ce que la clé "slider" est propre à mon application ou, elle est partagé entre toutes les applications ?

                      Apparemment non mais c'est pour être sûr au cas où ça ferait un conflit avec une autre clé nommée "slider".

                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 décembre 2014 à 14:13:34

                        non toutes les préférences sont propres à ton appli
                        • Partager sur Facebook
                        • Partager sur Twitter
                        The people who are crazy enough to think they can change the world, are the ones who do.

                        [Android] Réaliser un didacticiel

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown