Java tutorial
/** * @author Suraj Rawat <suraj.raw120@gmail.com> * @author Ujjwal Bhardwaj <ujjwalb1996@gmail.com> * * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see <http://www.gnu.org/licenses/> * */ package com.procleus.brime.ui; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import com.procleus.brime.R; import com.procleus.brime.login.SigninActivity; public class GetStartedActivity extends AppCompatActivity { private ViewPager viewPager; private MyViewPagerAdapter myViewPagerAdapter; private LinearLayout dotsLayout; private TextView[] dots; private int[] layouts; private Button buttonSkip, buttonNext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= 21) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } setContentView(R.layout.activity_getstarted); viewPager = (ViewPager) findViewById(R.id.view_pager); dotsLayout = (LinearLayout) findViewById(R.id.layoutDots); buttonSkip = (Button) findViewById(R.id.btn_skip); buttonNext = (Button) findViewById(R.id.btn_next); layouts = new int[] { R.layout.get_started_slide1, R.layout.get_started_slide2, R.layout.get_started_slide3, R.layout.get_started_slide4 }; addBottomDots(0); changeStatusBarColor(); myViewPagerAdapter = new MyViewPagerAdapter(); viewPager.setAdapter(myViewPagerAdapter); viewPager.addOnPageChangeListener(viewPagerPageChangeListener); buttonNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int current = getItem(+1); if (current < layouts.length) { viewPager.setCurrentItem(current); } else { Bundle extras = getIntent().getExtras(); if (extras != null) { String from = extras.getString("from").trim(); if (from.contains("mainActivity")) { Intent backToIntent = new Intent(GetStartedActivity.this, MainActivity.class); startActivity(backToIntent); finish(); } } else { Intent intent = new Intent(GetStartedActivity.this, SigninActivity.class); startActivity(intent); finish(); } } } }); buttonSkip.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bundle extras = getIntent().getExtras(); if (extras != null) { String from = extras.getString("from").trim(); if (from.contains("mainActivity")) { Intent backToIntent = new Intent(GetStartedActivity.this, MainActivity.class); startActivity(backToIntent); finish(); } } else { Intent intent = new Intent(GetStartedActivity.this, SigninActivity.class); startActivity(intent); } } }); } private void addBottomDots(int currentPage) { dots = new TextView[layouts.length]; int[] colorsActive = getResources().getIntArray(R.array.array_dot_active); int[] colorsInactive = getResources().getIntArray(R.array.array_dot_inactive); dotsLayout.removeAllViews(); for (int i = 0; i < dots.length; i++) { dots[i] = new TextView(this); dots[i].setText(Html.fromHtml("•")); dots[i].setTextSize(35); dots[i].setTextColor(colorsInactive[currentPage]); dotsLayout.addView(dots[i]); } if (dots.length > 0) { dots[currentPage].setTextColor(colorsActive[currentPage]); } } /** * Making notification bar transparent */ private void changeStatusBarColor() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT); } } private int getItem(int i) { return viewPager.getCurrentItem() + i; } ViewPager.OnPageChangeListener viewPagerPageChangeListener = new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { addBottomDots(position); if (position == layouts.length - 1) { buttonNext.setText("Got It"); buttonSkip.setVisibility(View.GONE); } else { buttonNext.setText("Next"); buttonSkip.setVisibility(View.VISIBLE); } } @Override public void onPageScrollStateChanged(int state) { } }; public class MyViewPagerAdapter extends PagerAdapter { private LayoutInflater layoutInflater; public MyViewPagerAdapter() { } @Override public Object instantiateItem(ViewGroup container, int position) { layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = layoutInflater.inflate(layouts[position], container, false); container.addView(view); return view; } @Override public int getCount() { return layouts.length; } @Override public boolean isViewFromObject(View view, Object obj) { return view == obj; } @Override public void destroyItem(ViewGroup container, int position, Object object) { View view = (View) object; container.removeView(view); } } }