Wie man die FloatingActionButton der neuen Design Support Library animiert

Ich benutze ein TabLayout mit 5 verschiedenen Fragmenten. Auf 3 dieser Fragmente sollte ein android.support.design.widget.FloatingActionButton erscheinen. Im Moment stelle ich einfach die Sichtbarkeit der FAB ein, wenn sich die Registerkarte ändert, aber ich möchte eine Animation haben, wo die FAB ein- und ausgeht. Wie kann ich das in Android erreichen?

  • Third Party FloatingActionButton-Bibliothek in CoordinatorLayout
  • Android: So ändern Sie die Größe der App: fabSize = "normal" für Floating Action Button
  • Android gemeinsame Elementübergang zwischen zwei Aktivitäten funktioniert nicht
  • Ist das ein Fehler in Android-Support-Design-Bibliothek?
  • Android Floating Action Button Semi Transparente Hintergrundfarbe
  • InflateException mit FloatingActionButton von der offiziellen Designbibliothek
  • Wie kann ich FloatingActionButton zwischen Tabs ändern?
  • Android: Detail Animation innerhalb Floating Action Button
  • 5 Solutions collect form web for “Wie man die FloatingActionButton der neuen Design Support Library animiert”

    Die Versteck- / Show-Animation für shrink / pop wird automatisch von der neuen Version der Support-Bibliothek gehandhabt. (22.2.1) Dann OnTabChange listener zeigen oder verstecken Sie die schwebende Aktionstaste mit Hilfe von Show / Hide-Methoden der neuen Bibliothek.

    Fab.show (); Oder fab.hide ();

    Die Entwurfsunterstützungsbibliothek Revision 22.2.1 (Juli 2015) fügte die hide() und show() Methoden der FloatingActionButton Klasse hinzu, so dass Sie diese von nun an verwenden können.

    http://developer.android.com/tools/support-library/index.html

    Bildbeschreibung hier eingeben

    Du willst so etwas? Aber anstatt es auf onScrollListener animieren, onScrollListener du es auf onCreateView oder onCreate Methode animieren. Folgen Sie diesem -> Implementieren Sie Floating Action Button – Teil 2

    Grundsätzlich fasst der Code nur dazu zusammen

    Animieren zum Ausblenden

     FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab); floatingActionButton.animate().translationY(floatingActionButton.getHeight() + 16).setInterpolator(new AccelerateInterpolator(2)).start(); 

    und

    Animation zurück zu Show

     FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab); floatingActionButton.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start(); 

    Aber wir wollen es nicht animieren, nur um es zu verbergen, "Animate to Hide" wird einfach so etwas sein

     FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab); floatingActionButton.setTranslationY(floatingActionButton.getHeight() + 16); 

    Auf 'Animate to Hide' setzen, dass auf der onCreateView oder onCreate Methode, so dass auf Ihrem FAB versteckt ist, wenn Sie dieses Fragment erstellen und Sie könnten dann einen Handler und Runnable, die auslösen 'Animate zurück zu Show' nach einem zweiten oder zwei zu Zeige deine animation

    Oder man könnte eine Zeit für kurze Animationen nutzen

     int mShortAnimationDuration = getResources().getInteger( android.R.integer.config_shortAnimTime); 

    Ich habe versucht, dies auf onScroll aber habe nicht auf onCreateView oder onCreate versucht, aber ich denke, es sollte funktionieren

    EDIT

    Versuchen Sie diesen Code;)

     public class DummyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { int mShortAnimationDuration = getResources().getInteger( android.R.integer.config_shortAnimTime); FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab); floatingActionButton.setTranslationY(floatingActionButton.getHeight() + 16); new Handler().postDelayed(new Runnable() { @Override public void run() { FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab); floatingActionButton.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start(); }, mShortAnimationDuration); } } } 

    Der einfachste Weg ist, die FloatingActionButton-Klasse zu erweitern und setVisibility zu überschreiben. So was:

     public void setVisibility(final int visibility) { if (getVisibility() != View.VISIBLE && visibility == View.VISIBLE && inAnim != null) { animator = // create your animator here super.setVisibility(visibility); } else if (getVisibility() == View.VISIBLE && visibility != View.VISIBLE) { AnimatorListenerAdapter listener = new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animator) { Button.super.setVisibility(visibility); } }); animator = // create your animator here animator.addListener(listener); } } 

    Der Code oben wird aus der Button-Klasse aus meiner Bibliothek genommen . Sie finden Beispielimplementierungen in Quellen.

    Weil ich die FloatingActionButton nicht erweitern wollte, habe ich es so gemacht:

     FloatingActionButton createButton; // ... Animation makeInAnimation = AnimationUtils.makeInAnimation(getBaseContext(), false); makeInAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationEnd(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationStart(Animation animation) { createButton.setVisibility(View.VISIBLE); } }); Animation makeOutAnimation = AnimationUtils.makeOutAnimation(getBaseContext(), true); makeOutAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationEnd(Animation animation) { createButton.setVisibility(View.INVISIBLE); } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationStart(Animation animation) { } }); // ... if (createButton.isShown()) { createButton.startAnimation(makeOutAnimation); } // ... if (!createButton.isShown()) { createButton.startAnimation(makeInAnimation); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.