react-native-navigation的迁移库

SideMenu.java 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.reactnativenavigation.views;
  2. import android.content.Context;
  3. import android.support.v4.view.GravityCompat;
  4. import android.support.v4.widget.DrawerLayout;
  5. import android.view.Gravity;
  6. import android.widget.RelativeLayout;
  7. import com.reactnativenavigation.params.SideMenuParams;
  8. import com.reactnativenavigation.utils.ViewUtils;
  9. public class SideMenu extends DrawerLayout {
  10. private ContentView sideMenuView;
  11. private RelativeLayout contentContainer;
  12. public RelativeLayout getContentContainer() {
  13. return contentContainer;
  14. }
  15. public void destroy() {
  16. sideMenuView.unmountOnDetachedFromWindow();
  17. removeView(sideMenuView);
  18. }
  19. public void setVisible(boolean visible, boolean animated) {
  20. if (!isShown() && visible) {
  21. openDrawer(animated);
  22. }
  23. if (isShown() && !visible) {
  24. closeDrawer(animated);
  25. }
  26. }
  27. public void openDrawer() {
  28. openDrawer(Gravity.LEFT);
  29. }
  30. public void openDrawer(boolean animated) {
  31. openDrawer(Gravity.LEFT, animated);
  32. }
  33. public void closeDrawer(boolean animated) {
  34. closeDrawer(Gravity.LEFT, animated);
  35. }
  36. public void toggleVisible(boolean animated) {
  37. if (isDrawerOpen(GravityCompat.START)) {
  38. closeDrawer(animated);
  39. } else {
  40. openDrawer(animated);
  41. }
  42. }
  43. public SideMenu(Context context, SideMenuParams sideMenuParams) {
  44. super(context);
  45. createContentContainer();
  46. createSideMenu(sideMenuParams);
  47. }
  48. private void createContentContainer() {
  49. LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
  50. contentContainer = new RelativeLayout(getContext());
  51. contentContainer.setId(ViewUtils.generateViewId());
  52. addView(contentContainer, lp);
  53. }
  54. private void createSideMenu(SideMenuParams sideMenuParams) {
  55. sideMenuView = new ContentView(getContext(), sideMenuParams.screenId, sideMenuParams.navigationParams);
  56. LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
  57. lp.gravity = Gravity.START;
  58. addView(sideMenuView, lp);
  59. }
  60. }