react-native-navigation的迁移库

TitleBar.java 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.reactnativenavigation.views;
  2. import android.content.Context;
  3. import android.support.v7.widget.Toolbar;
  4. import android.view.Menu;
  5. import com.reactnativenavigation.animation.VisibilityAnimator;
  6. import com.reactnativenavigation.params.TitleBarButtonParams;
  7. import java.util.List;
  8. public class TitleBar extends Toolbar {
  9. private boolean hideOnScroll = false;
  10. private VisibilityAnimator visibilityAnimator;
  11. public TitleBar(Context context) {
  12. super(context);
  13. }
  14. public void setButtons(List<TitleBarButtonParams> buttons, String navigatorEventId) {
  15. Menu menu = getMenu();
  16. menu.clear();
  17. for (int i = 0; i < buttons.size(); i++) {
  18. final TitleBarButton button = new TitleBarButton(menu, this, buttons.get(i), navigatorEventId);
  19. // Add button in reverse order because in iOS index 0 starts at right
  20. final int index = buttons.size() - i - 1;
  21. button.addToMenu(index);
  22. }
  23. }
  24. public void setHideOnScroll(boolean hideOnScroll) {
  25. this.hideOnScroll = hideOnScroll;
  26. }
  27. public void onScrollChanged(ScrollDirectionListener.Direction direction) {
  28. if (hideOnScroll) {
  29. if (visibilityAnimator == null) {
  30. createScrollAnimator();
  31. }
  32. visibilityAnimator.onScrollChanged(direction);
  33. }
  34. }
  35. private void createScrollAnimator() {
  36. visibilityAnimator = new VisibilityAnimator(this, VisibilityAnimator.HideDirection.Up, getHeight());
  37. }
  38. }