package com.dayu.bigfish.ui.fragment; import android.content.Intent; import android.content.res.AssetManager; import android.graphics.Typeface; import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import com.dayu.bigfish.R; import com.dayu.bigfish.base.BaseFragment; import com.dayu.bigfish.bean.Tab; import com.dayu.bigfish.bean.event.RefreshTab; import com.dayu.bigfish.presenter.homeorder.HomeOrderContract; import com.dayu.bigfish.presenter.homeorder.HomeOrderPresenter; import com.dayu.bigfish.ui.OrderRecordActivity; import com.dayu.bigfish.ui.adapter.FragmentHomeAdapter; import com.dayu.bigfish.utils.GetUserInfo; import com.dayu.bigfish.utils.ProgressUtil; import com.dayu.bigfish.utils.TabLayoutUtils; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; import static com.dayu.bigfish.R.id.tabicon; /** * Created by luofan on 2017/11/20. */ public class HomeOrderFragment extends BaseFragment<HomeOrderPresenter> implements HomeOrderContract.View { @BindView(R.id.home_tabLayout) TabLayout mTabLayout; @BindView(R.id.view_pager) ViewPager mViewPager; @BindView(R.id.title_right) TextView mTitleRight; public List<Fragment> list_fragments; private FragmentHomeAdapter adapter; private int userId; private TextView mTabNumTv; private TextView mTabTextTv; private boolean isFirstAddTab = true; public final static int SUBCRIBE_TIME = 2;//预约上门时间 public final static int ORDER_YUYUE = 3;//修改预约时间 public final static int ORDER_DOING = 4;//再次上门时间 public final static int ORDER_SOP_FINISH = 5;//SOP已完成 public final static int ORDER_FINISH = 6;//已完成 public final static int ORDER_NOCONTACT_FINISH = 7;//无联系人已完成 private int mTabIndex; private String[] tabDesc; public static HomeOrderFragment newInstance() { Bundle args = new Bundle(); HomeOrderFragment fragment = new HomeOrderFragment(); fragment.setArguments(args); return fragment; } @Override public View initView(View view) { init(); initData(); return view; } @Override public int getLayoutId() { return R.layout.activity_home; } @Override protected void lazyLoad() { initNetWorkTabNum(userId, 0); } @Override public void onResume() { super.onResume(); } public void init() { tabDesc = new String[]{mActivity.getString(R.string.waite_appointemnt), mActivity.getString(R.string.waite_server), mActivity.getString(R.string.order_exception), mActivity.getString(R.string.cancle_order)}; userId = GetUserInfo.getACCOUNT_ID(mActivity); EventBus.getDefault().register(this); } @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshTab(RefreshTab event) { initNetWorkTabNum(userId, event.getTabNum()); } public void initData() { list_fragments = new ArrayList<>(); list_fragments.add(new OrderFirstTabFragment()); list_fragments.add(new OrderSecondTabFragment()); list_fragments.add(new OrderThreeTabFragment()); list_fragments.add(new OrderFourTabFragment()); adapter = new FragmentHomeAdapter(getFragmentManager(), list_fragments); mViewPager.setAdapter(adapter); mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); mViewPager.setOffscreenPageLimit(4); mViewPager.setCurrentItem(0); mTabLayout.post(() -> { TabLayoutUtils.setIndicator(mTabLayout, 15, 15, R.color.cl_order_item_line_bg, mActivity); }); mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { int temp = tab.getPosition(); if (tab.getCustomView() == null) { return; } mTabNumTv = (TextView) tab.getCustomView().findViewById(R.id.tabtext); mTabTextTv = (TextView) tab.getCustomView().findViewById(R.id.tabicon); switch (temp) { case 0: mTabNumTv.setTextColor(getResources().getColor(R.color.cl_order_item_date)); mTabTextTv.setTextColor(getResources().getColor(R.color.cl_order_item_date)); mViewPager.setCurrentItem(0); break; case 1: mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_yellow)); mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_yellow)); mViewPager.setCurrentItem(1); break; case 2: mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_read)); mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_read)); mViewPager.setCurrentItem(2); break; case 3: mViewPager.setCurrentItem(3); break; } } @Override public void onTabUnselected(TabLayout.Tab tab) { if (mTabNumTv == null || mTabTextTv == null) { return; } switch (tab.getPosition()) { case 0: mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_init)); mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_init)); break; case 1: mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_init)); mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_init)); break; case 2: mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_init)); mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_init)); break; case 3: break; } } @Override public void onTabReselected(TabLayout.Tab tab) { } }); } /** * 请求服务器数据获取tab各状态的数量 */ private void initNetWorkTabNum(int userId, int tabIndex) { ProgressUtil.startLoad(mActivity); mTabIndex = tabIndex; mPresenter.getTabNum(userId); } /** * 将网络请求到的数据展示到tab上 */ private void setTabNum(Tab tab, int myTabIndex) { String[] tabNum = new String[]{tab.getReservation() + "", tab.getPendingservice() + "", tab.getError() + "", tab.getCanceled() + ""}; if (isFirstAddTab) { mTabLayout.removeAllTabs(); mTabLayout.addTab(mTabLayout.newTab().setCustomView(CreatTab(tabNum[0], tabDesc[0]))); mTabLayout.addTab(mTabLayout.newTab().setCustomView(CreatTab(tabNum[1], tabDesc[1]))); mTabLayout.addTab(mTabLayout.newTab().setCustomView(CreatTab(tabNum[2], tabDesc[2]))); mTabLayout.addTab(mTabLayout.newTab().setCustomView(CreatTab(tabNum[3], tabDesc[3]))); isFirstAddTab = false; } else { for (int i = 0; i < mTabLayout.getTabCount(); i++) { TextView tv = (TextView) mTabLayout.getTabAt(i).getCustomView().findViewById(R.id.tabtext); TextView tvIcon = (TextView) mTabLayout.getTabAt(i).getCustomView().findViewById(R.id.tabicon); tv.setText(tabNum[i]); tvIcon.setText(tabDesc[i]); } if (myTabIndex != -1) { mViewPager.setCurrentItem(myTabIndex); mTabLayout.getTabAt(myTabIndex).select(); } } } /** * TabLayout tab的自定义布局 * * @param number tab标签上的数字(更新频繁) * @param iconID tab标签数字下的状态说明(1.0版本默认4种状态) */ private View CreatTab(String number, String iconID) { View newtab = LayoutInflater.from(mActivity).inflate(R.layout.activity_home_tab, null); TextView textView_number = (TextView) 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 = (TextView) newtab.findViewById(tabicon); textView.setText(iconID); return newtab; } @OnClick(R.id.title_right) public void onViewClicked(View view) { switch (view.getId()) { case R.id.title_right: Intent intent = new Intent(mActivity, OrderRecordActivity.class); mActivity.startActivity(intent); break; } } @Override public void getTabNumSuccess(Tab tab) { setTabNum(tab, mTabIndex); } @Override public void onDetach() { super.onDetach(); EventBus.getDefault().unregister(this); } }