package com.bigfish.salecenter.ui.fragment; import android.content.res.AssetManager; import android.graphics.Typeface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import androidx.fragment.app.Fragment; import com.bigfish.salecenter.R; import com.bigfish.salecenter.databinding.FragmentHomeSaleBinding; import com.bigfish.salecenter.event.RefreshSaleTab; import com.bigfish.salecenter.model.SaleTab; import com.bigfish.salecenter.presenter.homesale.HomeSaleContract; import com.bigfish.salecenter.presenter.homesale.HomeSalePresenter; import com.dayu.base.api.APIService; import com.dayu.base.api.Api; import com.dayu.base.ui.adapter.FragmentAdapter; import com.dayu.base.ui.fragment.BaseFragment; import com.dayu.event.Notice; import com.dayu.event.SaleTabNumEvent; import com.dayu.utils.TabLayoutUtils; import com.google.android.material.tabs.TabLayout; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; /** * Created by mReturn * on 2020/2/12 **/ public class HomeSaleFragment extends BaseFragment<HomeSalePresenter, FragmentHomeSaleBinding> implements HomeSaleContract.View { public List<Fragment> list_fragments; private FragmentAdapter adapter; private TextView mTabNumTv; private TextView mTabTextTv; private boolean isFirstAddTab = true; private String[] tabDesc; private String mUmTag = "HomeSaleFragment"; public static HomeSaleFragment newInstance() { Bundle args = new Bundle(); HomeSaleFragment fragment = new HomeSaleFragment(); fragment.setArguments(args); return fragment; } @Override public int getLayoutId() { return R.layout.fragment_home_sale; } @Override public void setPresenter() { // mBind.setPresenter(mPresenter); } @Override public void initView() { tabDesc = new String[]{mActivity.getString(R.string.sale_products),"待提交", "待审核", mActivity.getString(R.string.sale_done)}; EventBus.getDefault().register(this); initData(); } private void initData() { list_fragments = new ArrayList<>(); list_fragments.add(SaleProductFragment.newInstance(1,1)); list_fragments.add(SaleProductFragment.newInstance(2,1)); list_fragments.add(SaleProductFragment.newInstance(3,2)); list_fragments.add(SaleProductFragment.newInstance(4,34)); adapter = new FragmentAdapter(getFragmentManager(), list_fragments); mBind.vpSale.setAdapter(adapter); mBind.tbSale.setupWithViewPager(mBind.vpSale); mBind.tbSale.setTabMode(TabLayout.MODE_FIXED); mBind.vpSale.setOffscreenPageLimit(4); mBind.tbSale.post(() -> TabLayoutUtils.setIndicator(mBind.tbSale, 0, 0, R.color.cl_order_item_line_bg, mActivity)); mBind.tbSale.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { int temp = tab.getPosition(); if (tab.getCustomView() == null) { return; } mTabNumTv = tab.getCustomView().findViewById(R.id.tabtext); mTabTextTv = tab.getCustomView().findViewById(R.id.tabicon); if (temp != 2) mTabNumTv.setTextColor(getResources().getColor(R.color.bg_button)); mTabTextTv.setTextColor(getResources().getColor(R.color.bg_button)); mBind.vpSale.setCurrentItem(temp); // MobclickAgent.onPageStart("SaleChildFragment" + temp); } @Override public void onTabUnselected(TabLayout.Tab tab) { if (mTabNumTv == null || mTabTextTv == null) { return; } int temp = tab.getPosition(); if (temp != 2) mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_init)); mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_init)); } @Override public void onTabReselected(TabLayout.Tab tab) { } }); mPresenter.chooseTab(0); getNotice(); } @Override public void setTabNum(SaleTab tab, int myTabIndex) { // EventBus.getDefault().post(new SaleTabNumEvent(tab.products+tab.collect+tab.inSale+tab.saleDone)); EventBus.getDefault().post(new SaleTabNumEvent(tab.unSubmit)); int[] tabNum = new int[]{tab.products, tab.unSubmit, tab.unAudit, tab.finish}; if (isFirstAddTab) { mBind.tbSale.removeAllTabs(); mBind.tbSale.addTab(mBind.tbSale.newTab().setCustomView(CreatTab(0, tabNum[0], tabDesc[0]))); mBind.tbSale.addTab(mBind.tbSale.newTab().setCustomView(CreatTab(1, tabNum[1], tabDesc[1]))); mBind.tbSale.addTab(mBind.tbSale.newTab().setCustomView(CreatTab(2, tabNum[2], tabDesc[2]))); mBind.tbSale.addTab(mBind.tbSale.newTab().setCustomView(CreatTab(3, tabNum[3], tabDesc[3]))); isFirstAddTab = false; } else { for (int i = 0; i < mBind.tbSale.getTabCount(); i++) { TextView tv = mBind.tbSale.getTabAt(i).getCustomView().findViewById(R.id.tabtext); TextView tvIcon = mBind.tbSale.getTabAt(i).getCustomView().findViewById(R.id.tabicon); tvIcon.setText(tabDesc[i]); int count = tabNum[i]; tv.setText(count + ""); tv.setTextSize(28); if (count > 999) { tv.setTextSize(24); } if (count > 9999) { tv.setTextSize(20); } if (count > 99999) { tv.setTextSize(16); } } if (myTabIndex != -1) { mBind.vpSale.setCurrentItem(myTabIndex); mBind.tbSale.getTabAt(myTabIndex).select(); } } } private View CreatTab(int index, int number, String iconID) { View newtab = LayoutInflater.from(mActivity).inflate(R.layout.layout_sale_tab, null); TextView textView_number = newtab.findViewById(R.id.tabtext); AssetManager mgr = mActivity.getAssets(); Typeface tf = Typeface.createFromAsset(mgr, "fonts/DIN Alternate Bold.ttf"); textView_number.setTypeface(tf); textView_number.setText(number + ""); TextView textView = newtab.findViewById(R.id.tabicon); textView.setText(iconID); return newtab; } /** * 获取公告数据. */ private void getNotice() { Api.getService(APIService.class).getNotice("2").compose(Api.applySchedulers()) .subscribe(mPresenter.baseObserver(data -> { StringBuilder tip = new StringBuilder(); for (Notice notice : data) { tip.append(notice.getComment() + " "); } if (data.isEmpty()) { mBind.notice.setVisibility(View.GONE); } else { mBind.notice.setVisibility(View.VISIBLE); } mBind.notice.setFocusable(true); mBind.notice.requestFocus(); mBind.notice.setText(tip.toString()); })); } @Override public void onDetach() { super.onDetach(); EventBus.getDefault().unregister(this); } @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (!hidden) { getNotice(); } } @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshTab(RefreshSaleTab event) { mPresenter.chooseTab(event.getTabNum()); } }