package io.hefuyi.listener.ui.fragment; import android.os.Build; import android.os.Bundle; import android.support.design.widget.AppBarLayout; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.afollestad.appthemeengine.ATE; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import io.hefuyi.listener.Constants; import io.hefuyi.listener.R; import io.hefuyi.listener.util.ATEUtil; import io.hefuyi.listener.util.DensityUtil; import io.hefuyi.listener.util.PreferencesUtility; /** * A simple {@link Fragment} subclass. */ public class MainFragment extends Fragment { @BindView(R.id.appbar) AppBarLayout appBarLayout; @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.tabs) TabLayout tabLayout; @BindView(R.id.viewpager) ViewPager viewPager; private PreferencesUtility mPreferences; private String action; public static MainFragment newInstance(String action) { MainFragment mainFragment = new MainFragment(); Bundle bundle = new Bundle(); switch (action) { case Constants.NAVIGATE_ALLSONG: bundle.putString(Constants.PLAYLIST_TYPE, action); break; case Constants.NAVIGATE_PLAYLIST_RECENTADD: bundle.putString(Constants.PLAYLIST_TYPE, action); break; case Constants.NAVIGATE_PLAYLIST_RECENTPLAY: bundle.putString(Constants.PLAYLIST_TYPE, action); break; case Constants.NAVIGATE_PLAYLIST_FAVOURATE: bundle.putString(Constants.PLAYLIST_TYPE, action); break; default: throw new RuntimeException("wrong action type"); } mainFragment.setArguments(bundle); return mainFragment; } @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); mPreferences = PreferencesUtility.getInstance(getActivity()); if (getArguments() != null) { action = getArguments().getString(Constants.PLAYLIST_TYPE); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_main, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ATE.apply(this, ATEUtil.getATEKey(getActivity())); ButterKnife.bind(this, view); if (Build.VERSION.SDK_INT < 21 && view.findViewById(R.id.status_bar) != null) { view.findViewById(R.id.status_bar).setVisibility(View.GONE); int statusBarHeight = DensityUtil.getStatusBarHeight(getContext()); Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); toolbar.setPadding(0, statusBarHeight, 0, 0); AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); params.setScrollFlags(0); toolbar.setLayoutParams(params); } ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); final ActionBar ab = ((AppCompatActivity) getActivity()).getSupportActionBar(); ab.setHomeAsUpIndicator(R.drawable.ic_menu); ab.setDisplayHomeAsUpEnabled(true); switch (action) { case Constants.NAVIGATE_ALLSONG: ab.setTitle(R.string.library); break; case Constants.NAVIGATE_PLAYLIST_RECENTADD: ab.setTitle(R.string.recent_add); break; case Constants.NAVIGATE_PLAYLIST_RECENTPLAY: ab.setTitle(R.string.recent_play); break; case Constants.NAVIGATE_PLAYLIST_FAVOURATE: ab.setTitle(R.string.favourate); break; } tabLayout.setupWithViewPager(viewPager); if (viewPager != null) { setupViewPager(viewPager); viewPager.setOffscreenPageLimit(2); viewPager.setCurrentItem(mPreferences.getStartPageIndex()); } } private void setupViewPager(ViewPager viewPager) { Adapter adapter = new Adapter(getChildFragmentManager()); adapter.addFragment(SongsFragment.newInstance(action), this.getString(R.string.songs)); adapter.addFragment(ArtistFragment.newInstance(action), this.getString(R.string.artists)); adapter.addFragment(AlbumFragment.newInstance(action), this.getString(R.string.albums)); viewPager.setAdapter(adapter); } @Override public void onPause() { super.onPause(); mPreferences.setStartPageIndex(viewPager.getCurrentItem()); } static class Adapter extends FragmentPagerAdapter { private final List<Fragment> mFragments = new ArrayList<>(); private final List<String> mFragmentTitles = new ArrayList<>(); public Adapter(FragmentManager fm) { super(fm); } public void addFragment(Fragment fragment, String title) { mFragments.add(fragment); mFragmentTitles.add(title); } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitles.get(position); } } }