/* * Licensed Materials - Property of IBM * © Copyright IBM Corporation 2015. All Rights Reserved. */ package com.ibm.mil.readyapps.telco.onboarding.appintrolib; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.KeyEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.TextView; import com.ibm.mil.readyapps.telco.R; import java.util.List; import java.util.Vector; public abstract class AppIntro extends AppCompatActivity { private PagerAdapter mPagerAdapter; private ViewPager pager; private final List<Fragment> fragments = new Vector<>(); private int slidesNumber; private IndicatorController mController; @Override final protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.intro_layout); final TextView skipButton = (TextView) findViewById(R.id.skip); final TextView nextButton = (TextView) findViewById(R.id.next); final TextView doneButton = (TextView) findViewById(R.id.done); skipButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(@NonNull View v) { onSkipPressed(); } }); nextButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(@NonNull View v) { pager.setCurrentItem(pager.getCurrentItem() + 1); } }); doneButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(@NonNull View v) { onDonePressed(); } }); mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments); pager = (ViewPager) findViewById(R.id.view_pager); pager.setAdapter(this.mPagerAdapter); /** * ViewPager.setOnPageChangeListener is now deprecated. Use addOnPageChangeListener() instead of it. */ pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { if (slidesNumber > 1) mController.selectPosition(position); if (position == slidesNumber - 1) { skipButton.setVisibility(View.INVISIBLE); nextButton.setVisibility(View.GONE); doneButton.setVisibility(View.VISIBLE); } else { skipButton.setVisibility(View.VISIBLE); doneButton.setVisibility(View.GONE); nextButton.setVisibility(View.VISIBLE); } } @Override public void onPageScrollStateChanged(int state) { } }); init(savedInstanceState); slidesNumber = fragments.size(); if (slidesNumber == 1) { nextButton.setVisibility(View.GONE); doneButton.setVisibility(View.VISIBLE); } else { initController(); } } private void initController() { if (mController == null) mController = new DefaultIndicatorController(); FrameLayout indicatorContainer = (FrameLayout) findViewById(R.id.indicator_container); indicatorContainer.addView(mController.newInstance(this)); mController.initialize(slidesNumber); } protected void addSlide(@NonNull Fragment fragment) { fragments.add(fragment); mPagerAdapter.notifyDataSetChanged(); } protected abstract void init(@Nullable Bundle savedInstanceState); protected abstract void onSkipPressed(); protected abstract void onDonePressed(); @Override public boolean onKeyDown(int code, KeyEvent kvent) { if (code == KeyEvent.KEYCODE_ENTER || code == KeyEvent.KEYCODE_BUTTON_A) { ViewPager vp = (ViewPager) this.findViewById(R.id.view_pager); if (vp.getCurrentItem() == vp.getAdapter().getCount() - 1) { onDonePressed(); } else { vp.setCurrentItem(vp.getCurrentItem() + 1); } return false; } return super.onKeyDown(code, kvent); } }