118 lines
3.6 KiB
Java
118 lines
3.6 KiB
Java
package com.gh.base;
|
|
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
|
|
import androidx.annotation.Nullable;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.viewpager.widget.ViewPager;
|
|
|
|
import com.gh.base.adapter.FragmentAdapter;
|
|
import com.gh.base.fragment.BaseFragment_TabLayout;
|
|
import com.gh.common.view.TabIndicatorView;
|
|
import com.gh.gamecenter.R;
|
|
import com.google.android.material.tabs.TabLayout;
|
|
import com.lightgame.view.NoScrollableViewPager;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import butterknife.BindView;
|
|
|
|
/**
|
|
* Created by khy on 15/03/18.
|
|
*/
|
|
|
|
public abstract class BaseActivity_TabLayout extends ToolBarActivity implements ViewPager.OnPageChangeListener {
|
|
|
|
public static final String PAGE_INDEX = "PAGE_INDEX";
|
|
|
|
@BindView(R.id.activity_tab_layout)
|
|
protected TabLayout mTabLayout;
|
|
@BindView(R.id.activity_view_pager)
|
|
protected NoScrollableViewPager mViewPager;
|
|
@BindView(R.id.activity_tab_indicator)
|
|
protected TabIndicatorView mTabIndicatorView;
|
|
|
|
protected List<Fragment> mFragmentsList;
|
|
|
|
protected List<String> mTabTitleList;
|
|
|
|
protected int mCheckedIndex = 0;
|
|
|
|
protected abstract void initFragmentList(List<Fragment> fragments);
|
|
|
|
protected abstract void initTabTitleList(List<String> tabTitleList);
|
|
|
|
protected int provideIndicatorWidth() {
|
|
return 20;
|
|
}
|
|
|
|
protected View provideTabView(int position, String tabTitle) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
protected int getLayoutId() {
|
|
return R.layout.activity_tablayout_viewpager;
|
|
}
|
|
|
|
@Override
|
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
List<Fragment> fragments = getSupportFragmentManager().getFragments();
|
|
if (fragments != null) {
|
|
for (Fragment fragment : fragments) {
|
|
fragment.onActivityResult(requestCode, resultCode, data);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
if (getIntent() != null) mCheckedIndex = getIntent().getIntExtra(PAGE_INDEX, 0);
|
|
mFragmentsList = new ArrayList<>();
|
|
initFragmentList(mFragmentsList);
|
|
mTabTitleList = new ArrayList<>();
|
|
initTabTitleList(mTabTitleList);
|
|
|
|
mViewPager.setOffscreenPageLimit(mFragmentsList.size());
|
|
mViewPager.addOnPageChangeListener(this);
|
|
mViewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(), mFragmentsList, mTabTitleList));
|
|
mViewPager.setCurrentItem(mCheckedIndex);
|
|
mTabLayout.setupWithViewPager(mViewPager);
|
|
mTabIndicatorView.setupWithTabLayout(mTabLayout);
|
|
mTabIndicatorView.setupWithViewPager(mViewPager);
|
|
mTabIndicatorView.setIndicatorWidth(provideIndicatorWidth());
|
|
|
|
for (int i = 0; i < mTabLayout.getTabCount(); i++) {
|
|
TabLayout.Tab tab = mTabLayout.getTabAt(i);
|
|
if (tab == null) continue;
|
|
String tabTitle = tab.getText() != null ? tab.getText().toString() : "";
|
|
View tabView = provideTabView(i, tabTitle);
|
|
if (tabView == null)
|
|
tabView = BaseFragment_TabLayout.createDefaultTabCustomView(tabTitle);
|
|
tab.setCustomView(tabView);
|
|
}
|
|
|
|
BaseFragment_TabLayout.initTabStyle(mTabLayout, mCheckedIndex);
|
|
}
|
|
|
|
@Override
|
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onPageSelected(int position) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onPageScrollStateChanged(int state) {
|
|
|
|
}
|
|
}
|