2016-02-17 28 views
9

Consente di fare qualcosa di impegnativo. Ho visto questa animazione per la navigazione Cassetto: enter image description hereAnimazione personalizzata per il cassetto di navigazione apri e chiudi

e vorrei implementarlo poiché è un grande effetto. Ho provato a ottenere l'effetto creando una vista personalizzata e al tatto ho ottenuto almeno il 50% di effetto simile. Vorrei implementare i miei metodi ondraw() e ontouch() dalla mia visualizzazione personalizzata alla vista di navigazione. Come è fatto? Qualcuno ha qualche idea? Qualcuno può dare qualsiasi link che ha roba simile.

Ho provato questo:

public class CustomNavigation extends DrawerLayout { 

    public CustomNavigation(Context context) { 
     super(context); 
    } 

    public CustomNavigation(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomNavigation(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
//  invalidate(); 
    } 
    public void start() 
    { 
     this.invalidate(); 
     Log.d("Parth", "start"); 
    } 

    @Override 
    public void onDraw(Canvas c) { 
     Log.d("Parth", "ondraw"); 
//  super.onDraw(c); 

    } 

} 

L'sul metodo di sorteggio non è chiamato. perchè è così?

dalla principale attività che faccio un oggetto della classe superiore e chiamare il metodo inizia così:

CustomNavigation drawer = (CustomNavigation) findViewById(R.id.drawer_layout); 
drawer.start(); 

e questa è solo la roba iniziale, voglio anche per implementare questi:

+0

Hi uno ha idea di come realizzare lo scatto sulla voce list-view e aprire una pagina di dettaglio di animazione immagine sopra come, Aiuto apprezzato Grazie in anticipo – KeTaN

risposta

5

Quindi, dopo aver trovato così tanto ho trovato una libreria per questo, ed ecco il link ad esso. Non so perché è stato così difficile da trovare. O è stata solo la mia settimana cattiva comunque per coloro che desiderano usarlo, qui puoi trovare la biblioteca. e più oltre io dare anche l'attuazione in caso di necessità:

main_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<com.mxn.soul.flowingdrawer_core.LeftDrawerLayout 
    android:id="@+id/id_drawerlayout" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:clipChildren="false" 

    > 

    <!--content--> 
    <android.support.design.widget.CoordinatorLayout 
     android:id="@+id/content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
    </android.support.design.widget.CoordinatorLayout> 

    <!--menu--> 
    <RelativeLayout 
     android:layout_width="280dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:clipChildren="false" 
     > 
     <com.mxn.soul.flowingdrawer_core.FlowingView 
      android:paddingRight="35dp" 
      android:id="@+id/sv" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 
     <FrameLayout 
      android:id="@+id/id_container_menu" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_alignParentLeft="true" 
      android:layout_marginRight="25dp" 

      /> 
    </RelativeLayout> 

</com.mxn.soul.flowingdrawer_core.LeftDrawerLayout> 

Main_activity.java

public class MainActivity extends AppCompatActivity{ 

    private LeftDrawerLayout mLeftDrawerLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mLeftDrawerLayout = (LeftDrawerLayout) findViewById(R.id.id_drawerlayout); 

     FragmentManager fm = getSupportFragmentManager(); 
     MyMenuFragment mMenuFragment = (MyMenuFragment) fm.findFragmentById(R.id.id_container_menu); 
     FlowingView mFlowingView = (FlowingView) findViewById(R.id.sv); 
     if (mMenuFragment == null) { 
      fm.beginTransaction().add(R.id.id_container_menu, mMenuFragment = new MyMenuFragment()).commit(); 
     } 
     mLeftDrawerLayout.setFluidView(mFlowingView); 
     mLeftDrawerLayout.setMenuFragment(mMenuFragment); 
    } 


} 

ora il navigationview è considerato come un frammento di codice per così qui il frammento è qui:

public class MyMenuFragment extends MenuFragment{ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment,container,false); 

     return setupReveal(v); 
    } 
} 

Quindi questo è praticamente tutto. Puoi ringraziare lo this person per il meraviglioso lavoro.

+0

Non lanciare ... mi mostra questo errore . java.lang.RuntimeException: impossibile avviare l'attività ComponentInfo {com.mxn.soul.flowingdrawer/com.mxn.soul.flowingdrawer.MainActivity}: java.lang.IllegalArgumentException: Target non deve essere nullo. – Debasish

+0

Causato da: java.lang.IllegalArgumentException: Target non deve essere nullo. in com.squareup.picasso.RequestCreator.into (RequestCreator.java:607) in com.squareup.picasso.RequestCreator.into (RequestCreator.java:590) in com.mxn.soul.flowingdrawer.MenuListFragment.setupHeader (MenuListFragment.java:58) su com.mxn.soul.flowingdrawer.MenuListFragment.onCreateView (MenuListFragment.java:45) – Debasish

1

animazione Flabby

Si può prendere l'aiuto di questo LINK

enter image description here enter image description here

Un esempio il video di questa libreria è su questo youtube video.

Il demo app può essere trovato nel Play Store.

+0

OHK grazie, malato provare questo –