导航抽屉的自定义animation打开和closures

让我们做点东西吧。 我已经看到这个导航的animation抽屉: 在这里输入图像说明

我想实施这个,效果很好。 我试图通过创build自定义视图来获得效果,并且触摸我得到至less50%类似的效果。 我想实现我的ondraw()和ontouch()方法从我的自定义视图导航视图。 这是怎么做的? 任何人有任何线索? 任何人都可以给任何有类似的东西的链接。

我试过这个:

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

on draw方法不被调用。 为什么?

从主要活动我做了上面的类的对象,并调用像这样的开始方法:

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

这只是最初的东西,我也想实现这些:

  • https://mir-s3-cdn-cf.behance.net/project_modules/disp/1637a925685965.56349328a6a5e.gif

  • https://mir-s3-cdn-cf.behance.net/project_modules/disp/092d8f25685965.5634935a53dde.gif

Solutions Collecting From Web of "导航抽屉的自定义animation打开和closures"

所以最后find这么多后,我find了这个库,这里是它的链接 。 我不知道为什么这么难find。 或者,对于那些希望使用它的人来说,这只是我的糟糕的一周,你可以在这里find图书馆。 如果你需要的话,我也会给你实施:

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

现在navigationview在这里被认为是一个片段,所以片段的代码在这里:

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

所以这是非常多的。 你可以感谢这个人的美好的工作。

松弛的animation

你可以从这个链接中获得帮助

在这里输入图像说明 在这里输入图像说明

这个图书馆的video例子是在这个YouTubevideo。

演示应用程序可以在Play商店中find。