react-native-navigation的迁移库

CollapsingContentView.java 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.reactnativenavigation.views;
  2. import android.content.Context;
  3. import android.support.annotation.Nullable;
  4. import android.view.MotionEvent;
  5. import android.view.View;
  6. import com.reactnativenavigation.params.NavigationParams;
  7. import com.reactnativenavigation.views.collapsingToolbar.CollapseAmount;
  8. import com.reactnativenavigation.views.collapsingToolbar.CollapsingView;
  9. import com.reactnativenavigation.views.collapsingToolbar.OnScrollViewAddedListener;
  10. import com.reactnativenavigation.views.collapsingToolbar.ScrollListener;
  11. import com.reactnativenavigation.views.collapsingToolbar.ScrollViewDelegate;
  12. import com.reactnativenavigation.views.collapsingToolbar.ViewCollapser;
  13. import com.reactnativenavigation.views.utils.ScrollViewDetector;
  14. public class CollapsingContentView extends ContentView implements CollapsingView {
  15. private @Nullable ScrollViewDelegate scrollViewDelegate;
  16. private @Nullable ScrollViewDetector scrollViewDetector;
  17. private final ViewCollapser viewCollapser;
  18. public CollapsingContentView(Context context, String screenId, NavigationParams navigationParams) {
  19. super(context, screenId, navigationParams);
  20. viewCollapser = new ViewCollapser(this);
  21. }
  22. public void setupCollapseDetection(ScrollListener scrollListener, OnScrollViewAddedListener onScrollViewAddedListener) {
  23. scrollViewDelegate = new ScrollViewDelegate(scrollListener);
  24. scrollViewDetector = new ScrollViewDetector(this, onScrollViewAddedListener, scrollViewDelegate);
  25. }
  26. @Override
  27. public boolean dispatchTouchEvent(MotionEvent ev) {
  28. if (scrollViewDelegate != null) {
  29. boolean consumed = scrollViewDelegate.didInterceptTouchEvent(ev);
  30. if (consumed) {
  31. return true;
  32. }
  33. }
  34. return super.dispatchTouchEvent(ev);
  35. }
  36. @Override
  37. public void onViewAdded(final View child) {
  38. super.onViewAdded(child);
  39. if (scrollViewDetector != null) {
  40. scrollViewDetector.detectScrollViewAdded(child);
  41. }
  42. }
  43. public void collapse(CollapseAmount amount) {
  44. viewCollapser.collapse(amount);
  45. }
  46. public void destroy() {
  47. if (scrollViewDelegate != null) {
  48. scrollViewDelegate.destroy();
  49. }
  50. if (scrollViewDetector != null) {
  51. scrollViewDetector.destroy();
  52. }
  53. }
  54. @Override
  55. public float getFinalCollapseValue() {
  56. return 0;
  57. }
  58. @Override
  59. public float getCurrentCollapseValue() {
  60. return 0;
  61. }
  62. @Override
  63. public View asView() {
  64. return this;
  65. }
  66. }