2015-03-30 15 views
6

Sto utilizzando la libreria https://github.com/futuresimple/android-floating-action-button per creare i pulsanti fav che funziona piuttosto bene. Ho provato diverse librerie, ma nessuna utilizza l'effetto usato nella maggior parte delle applicazioni con un fab (o app Google come keep, inbox) che quando si fa clic sullo sfondo dell'intera applicazione diventa bianco o nero semitrasparente, dipende. Non riesco a trovare alcun modo per farlo. È possibile avere un esempio o qualcosa del genere per fare questo tipo di effetto? Si può vedere quello che voglio dire in questa immagine: enter image description hereSfondo alfa su FAB cliccato

Lo sfondo nero semi-

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <RelativeLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <include 
      android:id="@+id/toolbar" 
      layout="@layout/toolbar" /> 
    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/semi_white_bg" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/white_semi_transparent" 
     android:visibility="gone" > 
    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/listFrame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/content_frame" 
     android:visibility="gone" > 

     <TextView 
      android:id="@+id/status" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/cabinet_color" 
      android:fontFamily="sans-serif" 
      android:gravity="center_vertical" 
      android:paddingBottom="8dp" 
      android:paddingLeft="16dp" 
      android:paddingRight="16dp" 
      android:paddingTop="8dp" 
      android:textColor="#fff" 
      android:textSize="17sp" 
      android:visibility="gone" /> 

     <android.support.v7.widget.RecyclerView 
      android:id="@android:id/list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/status" 
      android:clipToPadding="false" 
      android:scrollbars="vertical" /> 

     <LinearLayout 
      android:id="@android:id/empty" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:orientation="vertical" > 

      <ImageView 
       android:id="@+id/emptyImage" 
       android:layout_width="96dp" 
       android:layout_height="96dp" 
       android:layout_gravity="center_horizontal" 
       android:layout_marginBottom="16dp" 
       android:scaleType="fitXY" 
       android:src="?empty_image" /> 

      <TextView 
       android:id="@+id/emptyText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:layout_marginLeft="16dp" 
       android:layout_marginRight="16dp" 
       android:fontFamily="sans-serif-light" 
       android:gravity="center" 
       android:lineSpacingMultiplier="1.4" 
       android:paddingBottom="16dp" 
       android:text="@string/no_files" 
       android:textColor="?empty_text" 
       android:textSize="22sp" /> 
     </LinearLayout> 
    </RelativeLayout> 

    <ProgressBar 
     android:id="@android:id/progress" 
     style="?android:progressBarStyle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:indeterminateOnly="true" /> 

</RelativeLayout> 

questo è il mio layout.xml ma non sembra funziona affatto come ho want.Seems che si sovrappone l'intero vista ma solo colori ciò che vuole ..

+0

Non ricevendo, basta descrivere il problema in forma semplice. – Harry

risposta

2

apprezzato la tua domanda ...

questa libreria non permetterà u per impostare aggiungere evento click del pulsante, potrebbe essere necessario modificare il codice della libreria per il proprio, utilizzare questo idea: Utilizza Relatie o framelayout e aggiungi lo sfondo o l'immagine nera dietro FAB.

Ora in classe libreria FloatingActionsMenu.class trovare e commentare questo codice:

//mAddButton.setOnClickListener(new OnClickListener() 
//{ 
// @Override 
// public void onClick(View v) 
// { 
//  toggle(); 
// } 
//}); 

Quindi aggiungere questo metodo in quella classe,

public void setAddButtonClickListener(OnClickListener listener) 
{ 
mAddButton.setOnClickListener(listener); 
} 

Definire click ascoltatore nella vostra attività come

OnClickListener listener = new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     if (floatingActionMenuButton.isExpanded()) 
     {//make the background visible 
     } 
     else 
     {//make the background invisible 
     } 
     floatingActionMenuButton.toggle(); 
    } 
}; 

e passarlo a FAB

floatingActionMenuButton.setAddButtonClickListener(listener); 

Costruisci libreria e progetto, Spero che questo possa aiutarti!

+0

La tua idea sembra corretta .. Solo una cosa .. come puoi vedere il FloatingActionMenuButton è il "main" fab che, quando si fa clic, apre gli altri FloatingActionButtons .. Se commento quelle righe .. Funziona ancora? Voglio dire, aprirà gli altri pulsanti mobili o semplicemente creerà lo sfondo? Spero di non aver deciso tra loro ..Avrei entrambe le funzionalità –

+1

floatingActionMenuButton.toggle(); nel listener dei clic si aprirà o chiuderà altri pulsanti di menu e potrai anche modificare lo sfondo contemporaneamente. – Harry

+0

Questa è una notizia fantastica. Perfetto, appena sono a casa proverò la tua soluzione. Nel frattempo, grazie –

4

ho scoperto che questa sia la soluzione più semplice, a mio parere, e funziona perfettamente:

fam.setOnFloatingActionsMenuUpdateListener(new FloatingActionsMenu.OnFloatingActionsMenuUpdateListener() { 
     @Override 
     public void onMenuExpanded() { 
      dimmedBackground.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onMenuCollapsed() { 
      dimmedBackground.setVisibility(View.GONE); 
     } 
    }); 
+0

Proverò grazie. –

+0

impressionante nice one ho usato il codice da questa libreria https://github.com/Clans/FloatingActionButton e per stesso lavoro il codice è per questa libreria: floatingActionMenu.setOnMenuToggleListener (nuova FloatingActionMenu.OnMenuToggleListener() { @Override vuoto pubblico onMenuToggle (aperto booleano) { displayToast ("aperto è" + aperto); } }); –

1

È necessario avvolgere la vostra attività in un FrameLayout. FrameLayout dovrebbe avere 2 bambini

  • Il contenuto attività
  • Un'altra Framelayout contenente FloatingActionsMenu

Ecco il frammento di codice corrispondente.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:fab="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="in.city.bytes.view.MainActivity"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <!-- other content in the activity --> 
</LinearLayout> 

<FrameLayout 
    android:id="@+id/frame_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/white_overlay"> 
    <!-- floating action menu with buttons --> 
</FrameLayout> 

Nella vostra attività, modificare l'alfa di frame_layout quando si fa clic menù FAB. Ho anche scritto un blog che lo spiega. http://www.rishabhsinghal.in/implement-floating-action-button-similar-to-inbox-by-gmail-or-evernote/

+0

qual è il codice colore di white_overlay? –