package com.ogaclejapan.qiitanium.presentation.activity; import android.app.Fragment; import android.app.FragmentManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.View; import android.widget.TextView; import com.norbsoft.typefacehelper.TypefaceHelper; import com.ogaclejapan.qiitanium.R; import com.ogaclejapan.qiitanium.presentation.fragment.ArticleListFragment; import com.ogaclejapan.qiitanium.presentation.fragment.ComingSoonFragment; import com.ogaclejapan.qiitanium.presentation.fragment.ComingSoonScrollableFragment; import com.ogaclejapan.qiitanium.presentation.fragment.TagListFragment; import com.ogaclejapan.qiitanium.presentation.helper.ParallaxHeaderHelper; import com.ogaclejapan.qiitanium.presentation.helper.SlidingUpPanelHelper; import com.ogaclejapan.qiitanium.presentation.listener.Refreshable; import com.ogaclejapan.qiitanium.presentation.listener.ScrollableTab; import com.ogaclejapan.qiitanium.presentation.listener.ScrollableTabListener; import com.ogaclejapan.qiitanium.presentation.view.OverlayTopMenuView; import com.ogaclejapan.qiitanium.util.ViewUtils; import com.ogaclejapan.smarttablayout.SmartTabLayout; import com.ogaclejapan.smarttablayout.utils.v13.FragmentPagerItemAdapter; import com.ogaclejapan.smarttablayout.utils.v13.FragmentPagerItems; import com.sothree.slidinguppanel.SlidingUpPanelLayout; public class TopActivity extends AppActivity implements ScrollableTabListener, Refreshable { private final ViewPager.SimpleOnPageChangeListener onPageChangeListener = new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { Fragment f = viewPagerAdapter.getPage(position); if (f instanceof ScrollableTab) { ((ScrollableTab) f).adjustScroll(headerHelper.getTranslationY()); } } }; private OverlayTopMenuView topMenu; private ParallaxHeaderHelper headerHelper; private SlidingUpPanelHelper panelHelper; private ViewPager viewPager; private FragmentPagerItemAdapter viewPagerAdapter; public static void startActivity(Context context) { context.startActivity(intentOf(context)); } public static Intent intentOf(Context context) { return new Intent(context, TopActivity.class); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_top); FragmentManager fm = getFragmentManager(); View header = findViewById(R.id.header); View headerImage = findViewById(R.id.header_image); headerHelper = new ParallaxHeaderHelper.Builder(header, headerImage) .setMinHeight(getDimensionPixelSize(R.dimen.header_min_height)) .setElevation(getDimensionPixelSize(R.dimen.header_elevation)) .create(); SlidingUpPanelLayout slidingUpPanel = ViewUtils.findById(this, R.id.panel); panelHelper = new SlidingUpPanelHelper(slidingUpPanel); TextView title = ViewUtils.findById(this, R.id.title); title.setText(R.string.label_articles); viewPagerAdapter = new FragmentPagerItemAdapter(fm, FragmentPagerItems.with(this) .add(R.string.tab_new, ArticleListFragment.class) .add(R.string.tab_following, ComingSoonScrollableFragment.class) .create()); viewPager = ViewUtils.findById(this, R.id.article_top_viewpager); viewPager.setAdapter(viewPagerAdapter); SmartTabLayout viewPagerTab = ViewUtils.findById(this, R.id.viewpagertab); viewPagerTab.setCustomTabView(R.layout.view_tab, R.id.view_tab_text); viewPagerTab.setViewPager(viewPager); viewPagerTab.setOnPageChangeListener(onPageChangeListener); TextView tagTitle = ViewUtils.findById(this, R.id.tag_top_title); ViewPager tagViewPager = ViewUtils.findById(this, R.id.tag_top_viewpager); tagViewPager.setAdapter(new FragmentPagerItemAdapter(fm, FragmentPagerItems.with(this) .add(R.string.tab_popular, TagListFragment.class) .add(R.string.tab_following, ComingSoonFragment.class) .create())); SmartTabLayout tagViewPagerTab = ViewUtils.findById(this, R.id.tag_top_viewpagertab); tagViewPagerTab.setViewPager(tagViewPager); topMenu = ViewUtils.findById(this, R.id.overlay_top); topMenu.bindTo(this); TypefaceHelper.typeface(title); TypefaceHelper.typeface(tagTitle); TypefaceHelper.typeface(viewPagerTab); TypefaceHelper.typeface(tagViewPagerTab); } @Override public void onBackPressed() { if (topMenu.canTurnOff()) { topMenu.turnOff(); return; } if (!panelHelper.isCollapsed()) { panelHelper.collapse(); return; } super.onBackPressed(); } @Override public void onScroll(int scrollY, int position) { if (viewPager.getCurrentItem() != position) { return; } headerHelper.scroll(scrollY); } @Override public void refresh() { final Fragment f = viewPagerAdapter.getPage(viewPager.getCurrentItem()); if (f instanceof Refreshable) { ((Refreshable) f).refresh(); } } }