2015-04-16 7 views
18

Nach dem neuen Android Design Guidelines für den Floating Action Button sollte es sinnvoll sein, transform the Floating Action Button into a Toolbar.Floating Action Button Erweiterung

Gibt es Beispiele/Beispiele, um eine solche Transformation durchzuführen?

+0

Sie können die Enthüllungsanimation verwenden. Wenn Sie auf die Fab klicken, können Sie die Animation starten, um die gewünschte Werkzeugleiste anzuzeigen. Natürlich wird die Fab nur diese Funktion haben. –

+0

versuchen, meine Antwort zu sehen –

Antwort

13

Animation zeigen nutzen zu können, benötigen einen onLayoutChange Zuhörer auf die Ansicht in onCreateView Callback wie folgt hinzu:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     // Inflate the layout for this fragment 
     final View view = inflater.inflate(R.layout.fragment_map_list, container, false); 
     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { 
       @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
       @Override 
       public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { 
        v.removeOnLayoutChangeListener(this); 
        revealView(view); 
       } 
      }); 
     } 
     return view; 
    } 

wo die revealView() -Methode wird:

private void revealView(View view) { 

    toolbar = view.findViewById(R.id.mytoolbar); 

    int cx = (view.getLeft() + view.getRight())/2; 
    int cy = (view.getTop() + view.getBottom())/2; 
    float radius = Math.max(infoContainer.getWidth(), infoContainer.getHeight()) * 2.0f; 

    if (infoContainer.getVisibility() == View.INVISIBLE) { 
     infoContainer.setVisibility(View.VISIBLE); 
     ViewAnimationUtils.createCircularReveal(infoContainer, cx, cy, 0, radius).start(); 
    } else { 
     Animator reveal = ViewAnimationUtils.createCircularReveal(
       infoContainer, cx, cy, radius, 0); 
     reveal.addListener(new AnimatorListenerAdapter() { 
      @Override 
      public void onAnimationEnd(Animator animation) { 
       toolbar.setVisibility(View.INVISIBLE); 
      } 
     }); 
     reveal.start(); 
    } 
} 

Auf diese Weise können Sie sollte in der Lage sein, deine Animation zu erstellen. Dies ist der Weg, es zu benutzen. Wenden Sie dies einfach bei Ihrer fab onClick() Methode

+0

Das sieht gut aus. Ich werde es so schnell wie möglich testen. – Knossos

+0

Schön, lass es mich wissen;) –

+1

Ich habe gerade keine Zeit, es zu testen, aber durch Lesen Ihres Codes die kreisförmige Enthüllung sieht aus wie es ist, was ich brauche. – Knossos

4

Sieht für mich wie ein Circular Reveal Animation, die eine benutzerdefinierte Symbolleiste aufdeckt.

+0

Das sieht aus wie die andere Antwort, danke für die Referenz! – Vince