MainFragment.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package com.unis.sxzcl.ui.home;
  2. import android.view.LayoutInflater;
  3. import android.view.View;
  4. import android.view.ViewGroup;
  5. import android.widget.ImageView;
  6. import android.widget.TextView;
  7. import androidx.fragment.app.Fragment;
  8. import androidx.viewpager.widget.ViewPager;
  9. import com.unis.model.DataCallback;
  10. import com.unis.model.VersionModel;
  11. import com.unis.model.bean.VersionBean;
  12. import com.unis.sxzcl.base.BaseFragment;
  13. import com.unis.sxzcl.databinding.FragmentMainBinding;
  14. import com.unis.sxzcl.ui.work_module.WorkModuleFragment;
  15. import com.unis.sxzcl.widget.MyFragmentStatePagerAdapter;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. /**
  19. * 包名: com.unis.sxzcl.ui.home
  20. * 类名: MainFragment
  21. * 作用描述:
  22. * 创建人: mQ
  23. * 创建时间: 2020/12/8 17:34
  24. * 更新人:
  25. * 更新时间: 2020/12/8 17:34
  26. * 更新说明:
  27. * 版本号: 1.0
  28. */
  29. public class MainFragment extends BaseFragment<FragmentMainBinding> {
  30. private List<Fragment> mFragmentList = new ArrayList<>();
  31. private ImageView[] mTabImageViews;
  32. private TextView[] mTabTextViews;
  33. private boolean[] mTabTopWhite;
  34. private int indexFlag = -1;//tab选中标记
  35. @Override
  36. protected FragmentMainBinding getViewBinding(LayoutInflater inflater, ViewGroup container) {
  37. return FragmentMainBinding.inflate(inflater, container, false);
  38. }
  39. @Override
  40. protected void init() {
  41. //初始化tab控件
  42. initTab();
  43. //初始化Fragment
  44. initFragment();
  45. //初始化ViewPager
  46. initViewPager();
  47. }
  48. /**
  49. * 初始化ViewPager
  50. */
  51. private void initViewPager() {
  52. //创建适配器
  53. MyFragmentStatePagerAdapter adapter = new MyFragmentStatePagerAdapter(getChildFragmentManager(), mFragmentList);
  54. mBinding.viewPager.setAdapter(adapter);
  55. //设置页面留存数
  56. mBinding.viewPager.setOffscreenPageLimit(mFragmentList.size() + 1);
  57. //监听翻页事件
  58. mBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
  59. @Override
  60. public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
  61. }
  62. @Override
  63. public void onPageSelected(int position) {
  64. updateTab(position);
  65. }
  66. @Override
  67. public void onPageScrollStateChanged(int state) {
  68. }
  69. });
  70. }
  71. /**
  72. * 初始化Fragment
  73. */
  74. private void initFragment() {
  75. mFragmentList.add(new HomeFragment());
  76. mFragmentList.add(WorkModuleFragment.newFragment(true, ""));
  77. }
  78. /**
  79. * 初始化导航控件
  80. */
  81. private void initTab() {
  82. //给布局添加索引
  83. mBinding.layoutHome.setTag(0);
  84. mBinding.layoutWork.setTag(1);
  85. //监听点击事件
  86. mBinding.layoutHome.setOnClickListener(tabClickListener);
  87. mBinding.layoutWork.setOnClickListener(tabClickListener);
  88. //图片控件 按顺序初始化数组
  89. mTabImageViews = new ImageView[]{
  90. mBinding.ivHome,
  91. mBinding.ivWork,
  92. };
  93. //文字控件 按顺序初始化数组
  94. mTabTextViews = new TextView[]{
  95. mBinding.tvHome,
  96. mBinding.tvWork,
  97. };
  98. //顶部状态栏文字是否为白色 按顺序初始化数组
  99. mTabTopWhite = new boolean[]{
  100. true,
  101. true,
  102. };
  103. }
  104. @Override
  105. protected void onFirstShow() {
  106. updateTab(0);//默认选中第一个tab
  107. // try {
  108. // Beta.checkUpgrade(false, true);
  109. // } catch (Exception e) {
  110. // }
  111. getVersion();
  112. }
  113. /**
  114. * 获取版本更新
  115. */
  116. private void getVersion() {
  117. VersionModel.get().getVersionInfo(new DataCallback<List<VersionBean>>() {
  118. @Override
  119. public void onSuccess(List<VersionBean> data) {
  120. if (!isActive()) return;
  121. // VersionBean bean = data.get(0);
  122. // long versionCode = VersionTool.getVersionCode(getContext());
  123. // LogTool.i("本地版本:" + versionCode + " 线上版本:" + bean.getVersionCode());
  124. // if (versionCode < bean.getVersionCode()) {
  125. // // 有新版本更新
  126. // new VersionDialog(getContext())
  127. // .setContent(bean.getContent())
  128. // .setVersionName(bean.getVersionName())
  129. // .show();
  130. // }
  131. }
  132. });
  133. }
  134. View.OnClickListener tabClickListener = v -> {
  135. int index = (int) v.getTag();
  136. updateTab(index);
  137. };
  138. /**
  139. * 更新导航栏选项
  140. *
  141. * @param index 选中索引
  142. */
  143. private void updateTab(int index) {
  144. if (indexFlag == index)
  145. return;
  146. if (indexFlag != -1) {
  147. //上次选择置为默认
  148. mTabImageViews[indexFlag].setSelected(false);
  149. mTabTextViews[indexFlag].setEnabled(true);
  150. }
  151. //当前选择置为选中
  152. mTabImageViews[index].setSelected(true);
  153. mTabTextViews[index].setEnabled(false);
  154. if (mBinding.viewPager.getCurrentItem() != index) {
  155. mBinding.viewPager.setCurrentItem(index, false);
  156. }
  157. //设置状态栏颜色
  158. setStatusBarWhite(mTabTopWhite[index]);
  159. //保存索引为当前选择
  160. indexFlag = index;
  161. }
  162. }