react-native-navigation的迁移库

SingleScreenLayout.java 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.reactnativenavigation.layouts;
  2. import android.content.Context;
  3. import android.widget.FrameLayout;
  4. import com.reactnativenavigation.params.ScreenParams;
  5. import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
  6. public class SingleScreenLayout extends FrameLayout implements Layout {
  7. private final ScreenParams screenParams;
  8. private ScreenStack stack;
  9. public SingleScreenLayout(Context context, ScreenParams screenParams) {
  10. super(context);
  11. this.screenParams = screenParams;
  12. createStack(context);
  13. }
  14. private void createStack(Context context) {
  15. if (stack != null) {
  16. stack.destroy();
  17. }
  18. stack = new ScreenStack(context, screenParams);
  19. addView(stack, new LayoutParams(MATCH_PARENT, MATCH_PARENT));
  20. }
  21. @Override
  22. public boolean onBackPressed() {
  23. if (stack.isEmpty()) {
  24. return false;
  25. } else {
  26. stack.pop();
  27. return true;
  28. }
  29. }
  30. @Override
  31. public void onDestroy() {
  32. stack.destroy();
  33. }
  34. @Override
  35. public void removeAllReactViews() {
  36. stack.destroy();
  37. }
  38. }