Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] glissement de doigt droite ou gauche

    9 mai 2013 à 23:07:58

    Salut à tous !

    Je commence à développer sur Android après avoir suivi le tuto d'Apollidore, et je m'étonne ne ne pas avoir vue comment gérer le glissement de vues.

    Je crois voir ça dans à peu près toutes les applications, on glisse le doigt, disons de gauche à droite, et ça change de page.
    Le gérer en déclenchant une animation avec
    onTouchEvent serait surement possible mais le truc me parait un peu plus abouti et uniforme d'où mon soupçon de fonction native...

    Me trompe-je ?

    Merci !

    • Partager sur Facebook
    • Partager sur Twitter
      9 mai 2013 à 23:21:02

      Bonjour,

      Parles-tu de cette fonctionnalité dans les applications Android ?

      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
        9 mai 2013 à 23:24:49

        Ca à l'air d'être exactement ça !

        Bon il va me falloir lire tout ton tuto parce que les fragments je connais pas encore, je mettrais en résolu à ce moment :-)

        Merci !

        • Partager sur Facebook
        • Partager sur Twitter
          11 mai 2013 à 23:36:40

          Génial ton tuto, vraiment super !
          Le titre fait un peu peur genre "faut vraiment être un crack en android avant d'aller plus loin" mais en fait pas du tout, et c'est très bien expliqué !

          Je profite juste, je n'en suis encore qu'aux fragments dynamiques, j'ai un petit problème avec ta solution, d'ailleurs ça plante chez moi, tu utilises "mFragment = getIntent().getStringExtra("fragment");", mais sans avoir mis de putExtra avant, du coup ça me perd un peu...

          -
          Edité par Anaroyondo 11 mai 2013 à 23:37:43

          • Partager sur Facebook
          • Partager sur Twitter
            11 mai 2013 à 23:44:17

            Merci. Il faut quand même avoir des bases dans le développement Android (c'est-à-dire avoir lu le tutoriel de Apollidore) mais j'essaye quand même d'expliquer les concepts du mieux possible. A savoir qu'il existe un projet GitHub que tu pourras retrouver via ce lien. Malheureusement, le lien dans le tutoriel n'est pas à jour mais je ne peux pas le mettre à jour pour le moment puisque le module de rédaction n'est pas encore opérationnel sur le Site du Zéro.

            Sinon, je vois le problème. En fait, toutes les sources figurent dans ce projet GitHub et je lance cette activité avec une information dans le bundle concernant le fragment à afficher au démarrage. J'éditerais ça dès que je pourrais à nouveau le faire.

            • Partager sur Facebook
            • Partager sur Twitter
            Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
              13 mai 2013 à 19:18:03

              Ah super ce github !

              J'ai compris pourquoi ça ne marchait pas, la méthode onCreate a mal été recopiée j'ai l'impression
              Sur le site du zéro :

                  @Override
                  protected void onCreate(Bundle savedInstanceState) {
                      super.onCreate(savedInstanceState);
                      setContentView(R.layout.activity_fragment_dynamic);
               
                      if (savedInstanceState != null)
                          mFragment = savedInstanceState.getString("fragment");
                      else
                          mFragment = getIntent().getStringExtra("fragment");
               
                      setupFragments();
                      if (mFragment != null) {
                          if (mFragment.equals("Dynamic1Fragment")) {
                              showFragment(this.mDynamic1Fragment);
                          } else if (mFragment.equals("Dynamic2Fragment")) {
                              showFragment(this.mDynamic2Fragment);
                          }
                      }
                  }

              Sur github :

              @Override
              protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_fragment_dynamic);
              
              if (savedInstanceState != null)
              mFragment = savedInstanceState.getString("fragment");
              else
              mFragment = getIntent().getStringExtra("fragment");
              
              setupFragments();
              if (mFragment != null) {
              if (mFragment.equals("Dynamic1Fragment")) {
              showFragment(this.mDynamic1Fragment);
              } else if (mFragment.equals("Dynamic2Fragment")) {
              showFragment(this.mDynamic2Fragment);
              }
              } else {
              showFragment(this.mDynamic1Fragment);
              }
              }

              Tu corrigeras quand tu pourras^^

              EDIT : sauf si ce que je viens de remarquer est en fait ta correction sur github xD

              -
              Edité par Anaroyondo 13 mai 2013 à 19:18:46

              • Partager sur Facebook
              • Partager sur Twitter
                14 mai 2013 à 21:01:34

                Bon je reposte, mais non victorieux :-(

                J'ai plutôt bien compris le principe des fragments mais dès que j'en viens au chapitre "Passer des informations à la création d'un fragment", je ne comprend plus vraiment...

                J'essaye alors de copier les sources et de lancer l'appli mais ça ne marche pas et les sources ne sont pas toutes sur github (par exemple j'aimerais bien avoir DummyFragment.java, le mien doit être différent...)

                J'en profite pour te poser quelques questions^^

                • c'est quoi l'intérêt de la méthode statique DummyFragment.newInstance() par rapport à un constructeur ?
                • Tu dis que tu n'a pas utilisé de xml pour DummyFragment, mais si tu devais tu aurais fait comment ?
                • si je vais plus loin, dans le chapitre "ajout d'un indicateur de la page", je tombe sur une ActionBar. Je n'arrive pas à en gérer l'import, et d'après Apollidore elle n'existe qu'à partir de l'API11, ton tutoriel ne s'adresse donc qu'à partir de cette API ? (au final je me demande si ça vaut toujours le coup de développer en API7...)
                • est-ce déconseillé d'utiliser plusieurs packages dans une application ? Genre pour séparer mes views, activity etc

                Merci encore pour ce super tuto et désolé de ne pas y faire honneur ^^'


                EDIT : finalement, je m’essaie à l'API11, et je galère avec les différents imports : fragmentPagerAdapter n'existe qu'avec le support.v4, pas en natif ?

                -
                Edité par Anaroyondo 23 mai 2013 à 12:04:44

                • Partager sur Facebook
                • Partager sur Twitter
                  24 mai 2013 à 2:44:10

                  En fait, comme je te le disais dans mon MP, je vais rapidement apporter une réponse. :)

                  Pour les différences entre le projet GitHub et le tutoriel, c'est "normal". Etant donné que je peux avancer dans le développement des samples mais pas dans le tutoriel, j'y corrige certaines choses sans pouvoir les corriger dans le tutoriel puisque le module de rédaction n'est toujours pas disponible (et que je l'attends de pied ferme).

                  DummyFragment est SectionFragment dans le projet GitHub. Je l'ai simplement renommé.

                  Pour la réponse à tes questions :

                  • Une méthode statique permet de créer une instance du fragment et d'y attacher un bundle avec tes informations (la position dans SectionFragment). Ainsi, tu ne dois pas le faire partout dans le code de ton application. Tu centralises le tout dans cette méthode.
                  • J'utiliserais la variable inflater pour appeler sa méthode inflate(...).
                  • Oui, une fois que tu utilises la barre d'action, tu es obligé de définir l'API minimum à 11. J'ai oublié de le mentionné. Je le fais dès que je pourrais éditer mon tutoriel. Cela dit, la nouvelle version du projet de compatibilité Google devrait regler ce problème.
                  • Pourquoi cela serait déconseillé ? C'est justement la chose à faire !

                  -
                  Edité par Andr0 24 mai 2013 à 2:44:57

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                    25 mai 2013 à 0:15:51

                    Désolé Androwiiid, j'ai été infidèle xD
                    J'ai trouvé un tuto autre part : http://www.tutos-android.com/fragment-slider-page-lautre

                    Je n'ai pas bien compris la différence avec ton code mais celui ci marche chez moi \o/

                    Pour l’inflation j'ai fini par m'en sortir, effectivement ce n'était pas très compliqué...

                    Pour les packages, il n'y a pas un problème que ça devient l'identifiant de l'application ? ce n'est que pour le package main ?

                    Autre petite question, est-il possible d'insérer un bouton sous le viewPager ?
                    Bizarrement au dessus ça marche bien mais au dessous impossible... (j'utilise un linearLayout vertical)

                    Bon courage à toi !

                    -
                    Edité par Anaroyondo 25 mai 2013 à 11:05:52

                    • Partager sur Facebook
                    • Partager sur Twitter

                    [Android] glissement de doigt droite ou gauche

                    × 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