2010-09-03 8 views
5

Voglio implementare lo stesso comportamento della vista di notifica nell'app Facebook ufficiale. La scheda "notifiche" si trova nella parte inferiore e può essere trascinata/rilasciata tramite le dita a schermo intero.Come ottenere una visualizzazione gestuale come nell'app Facebook ufficiale

Come posso farlo?

L'ho provato tramite ViewFlipper e Animazione .... Ma nessun successo.

Qualcuno sa come possiamo fare questo?

L'app "Zedge" ha lo stesso nella funzione "cerca". Tramite trascinamento/rilascio è possibile aprire la vista "cerca".

risposta

4

Inoltre, ecco un demo litte come lo SlideingDrawer viene utilizzato:

/src - SliderActivity.java:

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.SlidingDrawer; 
import android.widget.SlidingDrawer.OnDrawerCloseListener; 
import android.widget.SlidingDrawer.OnDrawerOpenListener; 

public class SliderActivity extends Activity { 
    Button slideHandleButton; 
    SlidingDrawer slidingDrawer; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 
     slideHandleButton = (Button) findViewById(R.id.slideHandleButton); 
     slidingDrawer = (SlidingDrawer) findViewById(R.id.SlidingDrawer); 

     slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() { 
      @Override 
      public void onDrawerOpened() { 
       slideHandleButton.setBackgroundResource(R.drawable.arrowdown); 
      } 
     }); 

     slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() { 
      @Override 
      public void onDrawerClosed() { 
       slideHandleButton.setBackgroundResource(R.drawable.arrowup); 
      } 
     }); 
    } 
} 

/res/disposizione - main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:gravity="bottom"> 
    <SlidingDrawer android:layout_width="wrap_content" 
     android:id="@+id/SlidingDrawer" android:handle="@+id/slideHandleButton" 
     android:content="@+id/contentLayout" android:padding="10dip" 
     android:layout_height="200dip"> 
     <Button android:layout_width="wrap_content" 
      android:layout_height="wrap_content" android:id="@+id/slideHandleButton" 
      android:background="@drawable/arrowup"></Button> 
     <LinearLayout android:layout_width="wrap_content" 
      android:id="@+id/contentLayout" android:orientation="vertical" 
      android:gravity="center|top" android:padding="10dip" 
      android:background="#505050" android:layout_height="wrap_content"> 
      <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" 
       android:layout_height="fill_parent" android:layout_weight="8" android:text="Hello Slider"></TextView> 
      <Button android:id="@+id/Button02" android:layout_weight="2" android:layout_width="wrap_content" 
       android:layout_height="wrap_content" android:text="Do anything"></Button> 
     </LinearLayout> 
    </SlidingDrawer> 
</LinearLayout> 

Inoltre è necessario immagini nella cartella/res/drawable - in questo caso come arrowup.png e arrowdown.png

Se metti che tutti insieme si scopre a guardare in quel modo:

alt text

alt text

+0

Ciao! Grazie mille ... cercherò di aggiungere questo al mio applicaton. – chrisonline

+0

Funziona alla grande, ma come posso sovrapporre il contenuto sopra? Il mio problema è che lo SlidingDrawer si ferma alla fine del mio LinearLayout precedente. Ma dovrei sovrapporre l'intero LinearLayout qui sopra. Come nell'app Facebook. – chrisonline

+0

L'ho trovato. Non aggiungerlo al XML di layout principale. Invece crea un nuovo XML solo con il cassetto scorrevole e aggiungi il seguente codice: LayoutInflater inflater = getLayoutInflater(); Visualizza view = inflater.inflate (R.layout.drawer, null); getWindow(). AddContentView (view, params); – chrisonline

8

Queste app utilizzano uno SlidingDrawer. Lo SlidingDrawer eseguirà tutte le operazioni di apertura e chiusura solo per definire la vista del contenuto e la vista per l'handle.

È la stessa vista che viene utilizzata anche come cassetto applicazioni nella schermata principale.

+0

Hi! Grande grazie ... Proverò ad aggiungere questo al mio applicaton – chrisonline

Problemi correlati