react-native-navigation的迁移库

CollapsingSingleScreen.java 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package com.reactnativenavigation.screens;
  2. import android.support.v7.app.AppCompatActivity;
  3. import android.widget.ScrollView;
  4. import com.reactnativenavigation.params.ScreenParams;
  5. import com.reactnativenavigation.views.ContentView;
  6. import com.reactnativenavigation.views.LeftButtonOnClickListener;
  7. import com.reactnativenavigation.views.collapsingToolbar.CollapsingContentViewMeasurer;
  8. import com.reactnativenavigation.views.collapsingToolbar.CollapsingTopBar;
  9. import com.reactnativenavigation.views.collapsingToolbar.OnScrollViewAddedListener;
  10. import com.reactnativenavigation.views.collapsingToolbar.ScrollListener;
  11. public class CollapsingSingleScreen extends SingleScreen {
  12. public CollapsingSingleScreen(AppCompatActivity activity, ScreenParams screenParams, LeftButtonOnClickListener titleBarBarBackButtonListener) {
  13. super(activity, screenParams, titleBarBarBackButtonListener);
  14. }
  15. @Override
  16. protected void createTopBar() {
  17. final CollapsingTopBar topBar = new CollapsingTopBar(getContext(), styleParams.collapsingTopBarParams);
  18. topBar.setScrollListener(new ScrollListener(topBar,
  19. new ScrollListener.OnScrollListener() {
  20. @Override
  21. public void onScroll(float amount) {
  22. contentView.collapse(amount);
  23. topBar.collapse(amount);
  24. }
  25. }
  26. ));
  27. this.topBar = topBar;
  28. }
  29. @Override
  30. protected void createContent() {
  31. contentView = new ContentView(getContext(), screenParams.screenId, screenParams.navigationParams);
  32. contentView.setViewMeasurer(new CollapsingContentViewMeasurer((CollapsingTopBar) topBar, this));
  33. setupCollapseDetection((CollapsingTopBar) topBar);
  34. addView(contentView, createLayoutParams());
  35. }
  36. private void setupCollapseDetection(final CollapsingTopBar topBar) {
  37. contentView.setupCollapseDetection(new ScrollListener(topBar,
  38. new ScrollListener.OnScrollListener() {
  39. @Override
  40. public void onScroll(float amount) {
  41. contentView.collapse(amount);
  42. topBar.collapse(amount);
  43. }
  44. }
  45. ));
  46. contentView.setOnScrollViewAddedListener(new OnScrollViewAddedListener() {
  47. @Override
  48. public void onScrollViewAdded(ScrollView scrollView) {
  49. topBar.onScrollViewAdded(scrollView);
  50. }
  51. });
  52. }
  53. }