package com.nilhcem.bblfr.ui.about; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.nilhcem.bblfr.R; import com.nilhcem.bblfr.core.utils.IntentUtils; import com.nilhcem.bblfr.ui.navigationdrawer.NavigationDrawerActivity; import com.viewpagerindicator.CirclePageIndicator; import butterknife.BindView; import butterknife.OnClick; import icepick.State; public class AboutActivity extends NavigationDrawerActivity { private static final String ARTICLE_URL = "http://linsolas.github.io/blog/2013/02/09/lancez-vous-dans-les-brown-bag-lunches/"; @BindView(R.id.about_layout_container) ViewGroup mLayoutContainer; @BindView(R.id.about_steps_container) ViewGroup mStepsContainer; @BindView(R.id.about_last_step_container) ViewGroup mLastStepContainer; @BindView(R.id.about_viewpager) ViewPager mViewPager; @BindView(R.id.about_viewpager_indicator) CirclePageIndicator mViewPagerIndicator; @BindView(R.id.about_title) TextView mTitle; @BindView(R.id.about_content) TextView mContent; private int[] mTitlesIds = AboutPagerStepEntry.getTitles(); private int[] mContentIds = AboutPagerStepEntry.getContents(); @State int mCurrentViewPagerItem; public static Intent createLaunchIntent(Context context) { return new Intent(context, AboutActivity.class); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.about_activity); getSupportActionBar().setTitle(R.string.about_title); mViewPager.setAdapter(new AboutPagerAdapter()); mViewPagerIndicator.setViewPager(mViewPager); mViewPagerIndicator.setOnPageChangeListener(new FadePageListener()); mLayoutContainer.setOnTouchListener((v, event) -> mViewPager.onTouchEvent(event)); mViewPager.setCurrentItem(mCurrentViewPagerItem, false); } @OnClick(R.id.about_see_article) public void onSeeArticleButtonClicked() { IntentUtils.startSiteIntent(this, ARTICLE_URL); } class FadePageListener extends ViewPager.SimpleOnPageChangeListener { private int mLastTextPosition = -1; private int mMaxPosition = mTitlesIds.length - 1; @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { float alpha = getAlpha(positionOffset); if (position < mMaxPosition - 1 || position == mMaxPosition - 1 && Float.floatToRawIntBits(positionOffset) == 0) { mStepsContainer.setAlpha(1); mLastStepContainer.setVisibility(View.GONE); setStepText(positionOffset < 0.5 ? position : position + 1); mTitle.setAlpha(alpha); mContent.setAlpha(alpha); } else { mLastStepContainer.setVisibility(View.VISIBLE); if (Float.floatToRawIntBits(positionOffset) == 0) { mStepsContainer.setAlpha(0); mLastStepContainer.setAlpha(1); } else if (positionOffset < 0.5f) { mStepsContainer.setAlpha(alpha); mLastStepContainer.setVisibility(View.GONE); } else { mStepsContainer.setAlpha(0); mLastStepContainer.setAlpha(alpha); } setStepText(mMaxPosition - 1); } } @Override public void onPageSelected(int position) { super.onPageSelected(position); mCurrentViewPagerItem = position; } private void setStepText(int position) { if (mLastTextPosition != position) { mTitle.setText(mTitlesIds[position]); mContent.setText(mContentIds[position]); mLastTextPosition = position; } } private float getAlpha(float positionOffset) { float alpha; if (positionOffset < 0.5f) { alpha = 1 - positionOffset * 2; } else { alpha = positionOffset * 2 - 1; } return alpha; } } }