package com.mayank.rucky; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import java.util.Timer; import java.util.TimerTask; public class InitActivity extends AppCompatActivity { public static final String PREF_SETTINGS = "settings"; public static final String PREF_SETTINGS_INIT = "init"; private ViewPager viewPager; private LinearLayout dotsLayout; private int[] layouts; private Button btnSkip, btnNext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); setTheme(R.style.AppThemeDark); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); hideNavigationBar(); setContentView(R.layout.activity_init); viewPager = findViewById(R.id.view_pager); dotsLayout = findViewById(R.id.layoutDots); btnSkip = findViewById(R.id.btn_skip); btnNext = findViewById(R.id.btn_next); layouts = new int[]{ R.layout.slide1, R.layout.slide2, R.layout.slide3 }; addBottomDots(0); MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(); viewPager.setAdapter(myViewPagerAdapter); viewPager.addOnPageChangeListener(viewPagerPageChangeListener); btnSkip.setOnClickListener(v -> launchHomeScreen()); btnNext.setOnClickListener(v -> { // checking for last page // if last page home screen will be launched int current = getItem(); if (current < layouts.length) { // move to next screen viewPager.setCurrentItem(current); } else { launchHomeScreen(); } }); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); hideNavigationBar(); } public void hideNavigationBar() { final View decorView = this.getWindow().getDecorView(); final int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; Timer timer = new Timer(); TimerTask task = new TimerTask() { @Override public void run() { InitActivity.this.runOnUiThread(() -> decorView.setSystemUiVisibility(uiOptions)); } }; timer.scheduleAtFixedRate(task, 1, 2); } private void addBottomDots(int currentPage) { TextView[] 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]); } private int getItem() { return viewPager.getCurrentItem() + 1; } private void launchHomeScreen() { SharedPreferences.Editor editor = getSharedPreferences(PREF_SETTINGS,MODE_PRIVATE).edit(); editor.putBoolean(PREF_SETTINGS_INIT, false).apply(); startActivity(new Intent(InitActivity.this, MainActivity.class)); finish(); } ViewPager.OnPageChangeListener viewPagerPageChangeListener = new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { addBottomDots(position); if (position == layouts.length - 1) { // last page. make button text to GOT IT btnNext.setText(getString(R.string.init_start)); btnSkip.setVisibility(View.GONE); } else { btnNext.setText(getString(R.string.init_next)); btnSkip.setVisibility(View.VISIBLE); } } @Override public void onPageScrolled(int position, float arg1, int arg2) {} @Override public void onPageScrollStateChanged(int arg0) {} }; public class MyViewPagerAdapter extends PagerAdapter { private LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); MyViewPagerAdapter() { } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { assert layoutInflater != null; View view = layoutInflater.inflate(layouts[position], container, false); container.addView(view); return view; } @Override public int getCount() { return layouts.length; } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object obj) { return view == obj; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { View view = (View) object; container.removeView(view); } } }