react-native-navigation的迁移库

TitleBar.java 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package com.reactnativenavigation.views;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.support.v7.widget.ActionMenuView;
  5. import android.support.v7.widget.Toolbar;
  6. import android.view.Menu;
  7. import android.view.MenuInflater;
  8. import com.reactnativenavigation.R;
  9. import com.reactnativenavigation.animation.HideOnScrollAnimator;
  10. import com.reactnativenavigation.params.TitleBarButtonParams;
  11. import java.util.List;
  12. public class TitleBar extends Toolbar {
  13. private Menu menu;
  14. private ActionMenuView actionMenuView;
  15. private boolean hideOnScroll = false;
  16. private HideOnScrollAnimator hideOnScrollAnimator;
  17. public TitleBar(Context context) {
  18. super(context);
  19. createMenu();
  20. }
  21. public void setButtons(List<TitleBarButtonParams> buttons) {
  22. menu.clear();
  23. for (int i = 0; i < buttons.size(); i++) {
  24. final TitleBarButton button = new TitleBarButton(menu, actionMenuView, buttons.get(i));
  25. // Add button in reverse order because in iOS index 0 starts at right
  26. final int index = buttons.size() - i - 1;
  27. button.addToMenu(index);
  28. }
  29. }
  30. public void setupMenuButton() {
  31. }
  32. private void createMenu() {
  33. MenuInflater menuInflater = ((Activity) getContext()).getMenuInflater();
  34. actionMenuView = new ActionMenuView(getContext());
  35. menu = actionMenuView.getMenu();
  36. menuInflater.inflate(R.menu.stub, menu);
  37. addView(actionMenuView);
  38. // TODO: Maybe setSupportActionBar
  39. }
  40. public void setHideOnScroll(boolean hideOnScroll) {
  41. this.hideOnScroll = hideOnScroll;
  42. }
  43. public void onScrollChanged(ScrollDirectionListener.Direction direction) {
  44. if (hideOnScroll) {
  45. if (hideOnScrollAnimator == null) {
  46. createScrollAnimator();
  47. }
  48. hideOnScrollAnimator.onScrollChanged(direction);
  49. }
  50. }
  51. private void createScrollAnimator() {
  52. hideOnScrollAnimator = new HideOnScrollAnimator(this, HideOnScrollAnimator.HideDirection.Up, getHeight());
  53. }
  54. }