Boutons d'action flottants disparaissant sur le défilement

Je viens d'installer la bibliothèque FutureSimple pour les boutons d'action flottants, et je pense que c'est tout simplement magnifique. Bien qu'il ne contienne pas la disparition sur la logique de défilement, je l'aime. Cependant, je voudrais mettre en œuvre un modèle de retour rapide et je cherche un moyen simple de le faire. Fondamentalement, j'ai configuré un écouteur ObservableListView de la manière suivante:

listView.setScrollViewCallbacks(new ObservableScrollViewCallbacks() { @Override public void onScrollChanged(int i, boolean b, boolean b2) { } @Override public void onDownMotionEvent() { } @Override public void onUpOrCancelMotionEvent(ScrollState scrollState) { } }); 

Et je veux savoir s'il existe un moyen simple de faire bouger mon bouton (avec un bouton rapide.animate (). TraductionYx (xx)) avec cet auditeur.

  • Comment crypter et décrypter un fichier dans Android?
  • Comment faire le style de la bibliothèque DrawerArrowToggle from Android appcompat v7 21
  • Utilisation de WebView setHttpAuthUsernamePassword?
  • Android: Comment puis-je imprimer une variable sur la console eclipse?
  • Comment faire un plus petit barre de qualification?
  • \ Build \ intermediates \ res \ resources-anzhi-debug-stripped.ap_ 'spécifié pour la propriété' resourceFile 'n'existe pas
  • De sorte que chaque fois que je me déplace vers le bas, il disparaît, puis il réapparaît lorsque je me déplace vers le haut.

    J'ai examiné différentes implémentations, mais je n'ai pas tout à fait compris leur intérêt (en particulier la bibliothèque Fab "officielle" de makovkastar).

    PS: J'utilise la bibliothèque FutureSimple car elle comporte des menus.

    Merci beaucoup, à l'avance, pour votre aide recherchée :)!

  • Avertissement Strange Lint - Texte inattendu trouvé dans le fichier de mise en page: ""
  • Widgets Android: animations sur RemoteViews?
  • Flèche de ligne dans le formatage XML?
  • Comment ajouter le projet Guava à Eclipse
  • Comment centrer l'appareil photo afin que le marqueur soit en bas de l'écran? (Google map api V2 Android)
  • Eclipse: "L'import java.io ne peut pas être résolu"
  • One Solution collect form web for “Boutons d'action flottants disparaissant sur le défilement”

    J'ai résolu mon problème il y a quelques semaines, et j'ai pensé que je devrais probablement répondre à ma propre question ici 🙂

    Après plusieurs jours de recherches, j'ai constaté que la meilleure façon de mettre en œuvre est en utilisant le nouveau RecyclerView introduit par Android. Vous pouvez gérer de petits changements de pixels dans le défilement avec RecyclerView, mais avec ListView, vous ne pourrez presque jamais le faire (ne peut gérer que le changement de «articles» défilé). J'ai implémenté un écouteur ScrollView à mon RecyclerView comme ceci:

      public abstract class HidingScrollListener extends RecyclerView.OnScrollListener { private static final int HIDE_THRESHOLD = 20; private int scrolledDistance = 0; private boolean controlsVisible = true; @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int firstVisibleItem = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition(); //show views if first item is first visible position and views are hidden if (firstVisibleItem == 0) { if(!controlsVisible) { onShow(); controlsVisible = true; } } else { if (scrolledDistance > HIDE_THRESHOLD && controlsVisible) { onHide(); controlsVisible = false; scrolledDistance = 0; } else if (scrolledDistance < -HIDE_THRESHOLD && !controlsVisible) { onShow(); controlsVisible = true; scrolledDistance = 0; } } if((controlsVisible && dy>0) || (!controlsVisible && dy<0)) { scrolledDistance += dy; } } public abstract void onHide(); public abstract void onShow(); 

    Ce code fait PLUS que de simplement afficher ou cacher les FAB sur le défilement, il gère réellement un effet d'action "parfait" disparaît lors du défilement. Mais , je n'ai pas le temps de répondre à ce code à vos besoins, mais cela fonctionne pour notre cas, ici.

    Pour revenir à notre code, après avoir créé notre auditeur, nous pouvons l'ajouter à nos FAB en mettant en œuvre ses interfaces:

      recyclerView.setOnScrollListener(new HidingScrollListener() { @Override public void onHide() { FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) fam.getLayoutParams(); int fabBottomMargin = lp.bottomMargin; fam.animate().translationY(fam.getHeight()+fabBottomMargin).setInterpolator(new AccelerateInterpolator(2)).start(); } @Override public void onShow() { toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)); fam.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start(); } }); 

    Et Voilà!

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.