react-native-navigation的迁移库

RnnModal.java 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.reactnativenavigation.modal;
  2. import android.annotation.SuppressLint;
  3. import android.app.Dialog;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.Window;
  9. import android.view.animation.Animation;
  10. import android.view.animation.AnimationUtils;
  11. import com.reactnativenavigation.R;
  12. import com.reactnativenavigation.activities.BaseReactActivity;
  13. import com.reactnativenavigation.controllers.ModalController;
  14. import com.reactnativenavigation.core.objects.Screen;
  15. import com.reactnativenavigation.views.RctView;
  16. import com.reactnativenavigation.views.ScreenStack;
  17. /**
  18. * Created by guyc on 02/05/16.
  19. */
  20. public class RnnModal extends Dialog implements DialogInterface.OnDismissListener {
  21. private ScreenStack mScreenStack;
  22. private Screen mScreen;
  23. private View mContentView;
  24. public RnnModal(BaseReactActivity context, Screen screen) {
  25. super(context, R.style.Modal);
  26. mScreen = screen;
  27. ModalController.getInstance().add(this, screen.navigatorId);
  28. init(context);
  29. }
  30. @SuppressLint("InflateParams")
  31. private void init(final Context context) {
  32. requestWindowFeature(Window.FEATURE_NO_TITLE);
  33. mContentView = LayoutInflater.from(context).inflate(R.layout.modal_layout, null, false);
  34. mScreenStack = (ScreenStack) mContentView.findViewById(R.id.screenStack);
  35. setContentView(mContentView);
  36. mScreenStack.push(mScreen, new RctView.OnDisplayedListener() {
  37. @Override
  38. public void onDisplayed() {
  39. Animation animation = AnimationUtils.loadAnimation(context, R.anim.slide_up);
  40. mContentView.setAnimation(animation);
  41. mContentView.animate();
  42. }
  43. });
  44. }
  45. public void push(Screen screen) {
  46. mScreenStack.push(screen);
  47. }
  48. public Screen pop() {
  49. return mScreenStack.pop();
  50. }
  51. @Override
  52. public void onBackPressed() {
  53. if (mScreenStack.getStackSize() > 1) {
  54. mScreenStack.pop();
  55. } else {
  56. ModalController.getInstance().remove(mScreen.navigatorId);
  57. super.onBackPressed();
  58. }
  59. }
  60. @Override
  61. public void onDismiss(DialogInterface dialog) {
  62. ModalController.getInstance().remove(mScreen.navigatorId);
  63. }
  64. }