2016-02-17 6 views
9

Lassen Sie uns etwas herausfordern. Ich habe diese Animation für die Navigation gesehen Schublade: enter image description hereBenutzerdefinierte Animation für die Navigationsschublade öffnen und schließen

und ich möchte dies implementieren, wie es eine große Wirkung ist. Ich habe versucht, den Effekt durch Erstellen einer benutzerdefinierten Ansicht zu erhalten und bei Berührung bekomme ich mindestens 50% ähnlichen Effekt. Ich möchte meine Methoden ondraw() und ontouch() von meiner benutzerdefinierten Ansicht in die Navigationsansicht implementieren. Wie ist das gemacht? Irgendwelche Ahnung? Kann jemand irgendeinen Link geben, der ähnliche Sachen hat.

Ich habe dies versucht:

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); 

    } 

} 

Die auf Draw-Verfahren wird nicht aufgerufen. Warum ist das so?

aus der Haupttätigkeit machen i ein Objekt der Klasse oben und die Start-Methode wie folgt aufrufen:

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

und das ist nur der erste material, ich möchte auch diese implementieren:

+0

Hallo jemand hat eine Idee, wie zu erreichen, klicken Sie auf Listenansicht Element und öffnen Sie eine Detailseite Animation wie oben Bild, Hilfe geschätzt Vielen Dank im Voraus – KeTaN

Antwort

5

Also endlich nach dem Finden so viel habe ich eine Bibliothek dafür gefunden, und hier ist die link dazu. Ich weiß nicht, warum es so schwer war, es zu finden. Oder es war nur meine schlechte Woche für diejenigen, die es benutzen möchten, Sie können die Bibliothek hier finden. und mehr über i wird auch die Umsetzung geben, wenn Sie es brauchen:

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); 
    } 


} 

jetzt die navigationview als Fragment hier so Code gilt für Das Fragment ist hier:

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); 
    } 
} 

Also das ist es so ziemlich. Sie können this person für die wunderbare Arbeit danken.

+0

Nicht starten ... zeigt mir diesen Fehler . java.lang.RuntimeException: Die Aktivität konnte nicht gestartet werden ComponentInfo {com.mxn.soul.flowingdrawer/com.mxn.soul.flowingdrawer.MainActivity}: java.lang.IllegalArgumentException: Das Ziel darf nicht null sein. – Debasish

+0

verursacht durch: java.lang.IllegalArgumentException: Ziel darf nicht null sein. bei com.squareup.picasso.RequestCreator.into (RequestCreator.java:607) bei com.squareup.picasso.RequestCreator.into (RequestCreator.java:590) bei com.mxn.flowingdrawer.MenuListFragment.setupHeader (MenuListFragment.java:58) bei com.mxn.soul.flowingdrawer.MenuListFragment.onCreateView (MenuListFragment.java:45) – Debasish

1

Flabby Animation

Sie können Hilfe von diesem LINK

enter image description here enter image description here

Ein Video-Beispiel nehmen von dieser Bibliothek auf dieser ist youtube video.

The demo app kann gefunden werden auf dem Spielladen.

+0

ohk danke, krank versuchen dies –

Verwandte Themen