package com.c9mj.platform.live.ui; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.AlertDialog; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.c9mj.platform.R; import com.c9mj.platform.live.adapter.LiveTypeAdapter; import com.c9mj.platform.util.global.FragmentAdapter; import com.c9mj.platform.widget.fragment.BaseFragment; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.listener.OnItemClickListener; import net.lucode.hackware.magicindicator.MagicIndicator; import net.lucode.hackware.magicindicator.ViewPagerHelper; 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.LinePagerIndicator; import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.CommonPagerTitleView; import java.util.ArrayList; import java.util.Collections; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; /** * author: LMJ * date: 2016/9/1 * 直播主页面 */ public class LiveFragment extends BaseFragment { private final List<String> typeIdList = new ArrayList<>(); //直播平台id private final List<String> typeNameList = new ArrayList<>(); //直播平台名字 private final Integer[] logoArrays = new Integer[]{ 0, R.drawable.logo_douyu, R.drawable.logo_panda, R.drawable.logo_zhanqi, R.drawable.logo_yy, R.drawable.logo_longzhu, R.drawable.logo_quanmin, R.drawable.logo_cc, R.drawable.logo_huomao }; private final List<Fragment> fragmentList = new ArrayList<>(); private final List<String> titleList = new ArrayList<>(); @BindView(R.id.magic_indicator) MagicIndicator indicator; @BindView(R.id.viewpager) ViewPager viewPager; @BindView(R.id.tv_live_type) TextView tv_live_type; private int pos; private int currentPos; private Context context; private CommonNavigatorAdapter navigatorAdapter; private FragmentAdapter fragmentAdapter; public static LiveFragment newInstance() { LiveFragment fragment = new LiveFragment(); Bundle args = new Bundle(); 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_live, container, false); ButterKnife.bind(this, view); context = view.getContext(); return view; } @Override public void onLazyInitView(@Nullable Bundle savedInstanceState) { super.onLazyInitView(savedInstanceState); initView(); } private void initView() { //初始化MVP //设置RefreshLayout //设置RecyclerView /***设置其他View***/ //直播平台ID Collections.addAll(typeIdList, context.getResources().getStringArray(R.array.live_type_id)); //直播平台名称 Collections.addAll(typeNameList, context.getResources().getStringArray(R.array.live_type_name)); //顶部栏标题 titleList.add(getString(R.string.live_lol)); titleList.add(getString(R.string.live_ow)); titleList.add(getString(R.string.live_dota2)); titleList.add(getString(R.string.live_hs)); titleList.add(getString(R.string.live_csgo)); fragmentList.add(LiveListFragment.newInstance(getString(R.string.game_type_lol))); fragmentList.add(LiveListFragment.newInstance(getString(R.string.game_type_ow))); fragmentList.add(LiveListFragment.newInstance(getString(R.string.game_type_dota2))); fragmentList.add(LiveListFragment.newInstance(getString(R.string.game_type_hs))); fragmentList.add(LiveListFragment.newInstance(getString(R.string.game_type_csgo))); //ViewPager + Indicator fragmentAdapter = new FragmentAdapter(this.getChildFragmentManager(), fragmentList); viewPager.setAdapter(fragmentAdapter); viewPager.setOffscreenPageLimit(4); CommonNavigator navigator = new CommonNavigator(context); navigator.setAdjustMode(true); navigator.setFollowTouch(true); navigatorAdapter = new CommonNavigatorAdapter() { @Override public int getCount() { return fragmentList.size(); } @Override public IPagerTitleView getTitleView(Context context, final int index) { CommonPagerTitleView titleView = new CommonPagerTitleView(context); titleView.setContentView(R.layout.item_live_tab_indicator_layout);//加载自定义布局作为Tab final TextView tab_textview = (TextView) titleView.findViewById(R.id.tab_text); tab_textview.setText(titleList.get(index)); titleView.setOnPagerTitleChangeListener(new CommonPagerTitleView.OnPagerTitleChangeListener() { @Override public void onSelected(int i, int i1) { } @Override public void onDeselected(int i, int i1) { } @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 -> viewPager.setCurrentItem(index)); return titleView; } @Override public IPagerIndicator getIndicator(Context context) { LinePagerIndicator indicator = new LinePagerIndicator(context); indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT); indicator.setLineHeight(UIUtil.dip2px(context, 2)); indicator.setRoundRadius(UIUtil.dip2px(context, 2)); indicator.setYOffset(UIUtil.dip2px(context, 0.5)); indicator.setColors(ContextCompat.getColor(context, R.color.color_icons)); return indicator; } }; navigator.setAdapter(navigatorAdapter); indicator.setNavigator(navigator); ViewPagerHelper.bind(indicator, viewPager); } @OnClick(R.id.tv_live_type) public void onClick() { AlertDialog.Builder builder = new AlertDialog.Builder(context); View contentView = View.inflate(context, R.layout.layout_live_type_picker, null); final ImageView iv_logo = (ImageView) contentView.findViewById(R.id.layout_live_type_picker_iv_logo); RecyclerView recylcerView = (RecyclerView) contentView.findViewById(R.id.layout_live_type_picker_recyclerview); LiveTypeAdapter adapter = new LiveTypeAdapter(typeNameList); recylcerView.setLayoutManager(new GridLayoutManager(context, 3)); recylcerView.setAdapter(adapter); recylcerView.addOnItemTouchListener(new OnItemClickListener() { @Override public void onSimpleItemClick(BaseQuickAdapter adapter, View view, int position) { Glide.with(context) .load(logoArrays[position]) .dontAnimate() .into(iv_logo); iv_logo.setScaleType(ImageView.ScaleType.FIT_CENTER); currentPos = position; } }); builder.setView(contentView) .setPositiveButton(getString(R.string.enter), (dialog, which) -> { pos = currentPos; tv_live_type.setText(typeNameList.get(pos)); dialog.dismiss(); }) .setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.dismiss()); AlertDialog dialog = builder.create(); dialog.show(); dialog.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(ContextCompat.getColor(context, R.color.color_primary)); dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(ContextCompat.getColor(context, R.color.color_secondary_text)); } /** * 暴露给内嵌子Fragment获取直播平台id * * @return */ public String getLiveType() { return typeIdList.get(pos); } }