react-native-navigation的迁移库

BottomTabPresenter.java 4.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package com.reactnativenavigation.presentation;
  2. import android.content.*;
  3. import android.graphics.drawable.*;
  4. import android.support.annotation.*;
  5. import android.support.v4.content.*;
  6. import com.reactnativenavigation.parse.*;
  7. import com.reactnativenavigation.utils.*;
  8. import com.reactnativenavigation.viewcontrollers.*;
  9. import com.reactnativenavigation.viewcontrollers.bottomtabs.*;
  10. import com.reactnativenavigation.views.*;
  11. import com.reactnativenavigation.views.Component;
  12. import java.util.*;
  13. public class BottomTabPresenter {
  14. private final Context context;
  15. private ImageLoader imageLoader;
  16. private Options defaultOptions;
  17. private final BottomTabFinder bottomTabFinder;
  18. private BottomTabs bottomTabs;
  19. private final int defaultSelectedTextColor;
  20. private final int defaultTextColor;
  21. private final List<ViewController> tabs;
  22. public BottomTabPresenter(Context context, List<ViewController> tabs, ImageLoader imageLoader, Options defaultOptions) {
  23. this.tabs = tabs;
  24. this.context = context;
  25. this.bottomTabFinder = new BottomTabFinder(tabs);
  26. this.imageLoader = imageLoader;
  27. this.defaultOptions = defaultOptions;
  28. defaultSelectedTextColor = defaultOptions.bottomTabOptions.selectedIconColor.get(ContextCompat.getColor(context, com.aurelhubert.ahbottomnavigation.R.color.colorBottomNavigationAccent));
  29. defaultTextColor = defaultOptions.bottomTabOptions.iconColor.get(ContextCompat.getColor(context, com.aurelhubert.ahbottomnavigation.R.color.colorBottomNavigationInactive));
  30. }
  31. public void setDefaultOptions(Options defaultOptions) {
  32. this.defaultOptions = defaultOptions;
  33. }
  34. public void bindView(BottomTabs bottomTabs) {
  35. this.bottomTabs = bottomTabs;
  36. }
  37. public void applyOptions() {
  38. for (int i = 0; i < tabs.size(); i++) {
  39. BottomTabOptions tab = tabs.get(i).resolveCurrentOptions(defaultOptions).bottomTabOptions;
  40. bottomTabs.setBadge(i, tab.badge.get(""));
  41. bottomTabs.setBadgeColor(tab.badgeColor.get(null));
  42. bottomTabs.setTitleTypeface(i, tab.fontFamily);
  43. bottomTabs.setIconActiveColor(i, tab.selectedIconColor.get(null));
  44. bottomTabs.setIconInactiveColor(i, tab.iconColor.get(null));
  45. bottomTabs.setTitleActiveColor(i, tab.selectedTextColor.get(null));
  46. bottomTabs.setTitleInactiveColor(i, tab.textColor.get(null));
  47. bottomTabs.setTitleInactiveTextSizeInSp(i, tab.fontSize.hasValue() ? Float.valueOf(tab.fontSize.get()) : null);
  48. bottomTabs.setTitleActiveTextSizeInSp(i, tab.selectedFontSize.hasValue() ? Float.valueOf(tab.selectedFontSize.get()) : null);
  49. bottomTabs.setTag(i, tab.testId.get(null));
  50. }
  51. }
  52. public void mergeChildOptions(Options options, Component child) {
  53. int index = bottomTabFinder.findByComponent(child);
  54. if (index >= 0) {
  55. BottomTabOptions bto = options.bottomTabOptions;
  56. if (bto.badge.hasValue()) bottomTabs.setBadge(index, bto.badge.get());
  57. if (bto.badgeColor.hasValue()) bottomTabs.setBadgeColor(bto.badgeColor.get());
  58. if (bto.fontFamily != null) bottomTabs.setTitleTypeface(index, bto.fontFamily);
  59. if (bto.selectedIconColor.hasValue()) bottomTabs.setIconActiveColor(index, bto.selectedIconColor.get());
  60. if (bto.iconColor.hasValue()) bottomTabs.setIconInactiveColor(index, bto.iconColor.get());
  61. if (bto.selectedTextColor.hasValue()) bottomTabs.setTitleActiveColor(index, bto.selectedTextColor.get());
  62. if (bto.textColor.hasValue()) bottomTabs.setTitleInactiveColor(index, bto.textColor.get());
  63. if (bto.text.hasValue()) bottomTabs.setText(index, bto.text.get());
  64. if (bto.icon.hasValue()) imageLoader.loadIcon(context, bto.icon.get(), new ImageLoadingListenerAdapter() {
  65. @Override
  66. public void onComplete(@NonNull Drawable drawable) {
  67. bottomTabs.setIcon(index, drawable);
  68. }
  69. });
  70. if (bto.testId.hasValue()) bottomTabs.setTag(index, bto.testId.get());
  71. }
  72. }
  73. }