package com.c9mj.platform.main.ui;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import com.blankj.utilcode.utils.ToastUtils;
import com.c9mj.platform.R;
import com.c9mj.platform.explore.ui.ExploreFragment;
import com.c9mj.platform.live.ui.LiveFragment;
import com.c9mj.platform.user.ui.UserFragment;
import com.c9mj.platform.widget.fragment.BaseFragment;
import net.lucode.hackware.magicindicator.FragmentContainerHelper;
import net.lucode.hackware.magicindicator.MagicIndicator;
import net.lucode.hackware.magicindicator.buildins.UIUtil;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.BezierPagerIndicator;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.CommonPagerTitleView;
import butterknife.BindView;
import butterknife.ButterKnife;
import me.yokeyword.fragmentation.SupportFragment;
/**
* author: LMJ
* date: 2016/9/1
*/
public class MainFragment extends BaseFragment {
private static final String KEY = "key";
private final int[] normalResId = new int[]{
R.drawable.ic_explore_normal,
R.drawable.ic_live_normal,
R.drawable.ic_user_normal
};
private final int[] pressedResId = new int[]{
R.drawable.ic_explore_pressed,
R.drawable.ic_live_pressed,
R.drawable.ic_user_pressed
};
private final SupportFragment[] fragments = new SupportFragment[3];
private final FragmentContainerHelper fragmentContainerHelper = new FragmentContainerHelper();
@BindView(R.id.layout_container)
FrameLayout layout_container;
@BindView(R.id.magic_indicator)
MagicIndicator indicator;
private long exitTime;//用于按两次Back键退出
private Context context;
private int current;
public static MainFragment newInstance() {
return newInstance("");
}
private static MainFragment newInstance(String value) {
MainFragment fragment = new MainFragment();
Bundle args = new Bundle();
args.putString(KEY, value);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_main, container, false);
ButterKnife.bind(this, view);
context = view.getContext();
initView();
return view;
}
private void initView() {
//初始化MVP
//设置RefreshLayout
//设置RecyclerView
/***设置其他View***/
//Fragment相关
fragments[0] = ExploreFragment.newInstance();
fragments[1] = LiveFragment.newInstance();
fragments[2] = UserFragment.newInstance();
loadMultipleRootFragment(R.id.layout_container, 0,
fragments[0],
fragments[1],
fragments[2]);
current = 0;
//MagicIndicator
CommonNavigator navigator = new CommonNavigator(context);
navigator.setAdjustMode(true);
navigator.setFollowTouch(true);
navigator.setAdapter(new CommonNavigatorAdapter() {
@Override
public int getCount() {
return fragments.length;
}
@Override
public IPagerTitleView getTitleView(Context context, final int index) {
CommonPagerTitleView titleView = new CommonPagerTitleView(context);
titleView.setContentView(R.layout.item_main_tab_indicator_layout);//加载自定义布局作为Tab
final Button tab_btn = (Button) titleView.findViewById(R.id.tab_btn);
titleView.setOnPagerTitleChangeListener(new CommonPagerTitleView.OnPagerTitleChangeListener() {
@Override
public void onSelected(int i, int i1) {
tab_btn.setBackgroundResource(pressedResId[i]);
}
@Override
public void onDeselected(int i, int i1) {
tab_btn.setBackgroundResource(normalResId[i]);
}
@Override
public void onLeave(int i, int i1, float v, boolean b) {
}
@Override
public void onEnter(int i, int i1, float v, boolean b) {
}
});
titleView.setOnClickListener(v -> {
fragmentContainerHelper.handlePageSelected(index);
showHideFragment(fragments[index], fragments[current]);
current = index;
});
return titleView;
}
@Override
public IPagerIndicator getIndicator(Context context) {
BezierPagerIndicator indicator = new BezierPagerIndicator(context);
indicator.setMaxCircleRadius(UIUtil.dip2px(context, 3));
indicator.setColors(ContextCompat.getColor(context, R.color.color_primary));
return indicator;
}
});
indicator.setNavigator(navigator);
fragmentContainerHelper.attachMagicIndicator(indicator);
}
@Override
public boolean onBackPressedSupport() {
if (System.currentTimeMillis() - exitTime > 2000) {
exitTime = System.currentTimeMillis();
ToastUtils.showShortToast(getString(R.string.second_exit));
return true;
} else {
return super.onBackPressedSupport();
}
}
}