package com.loopeer.codereader.ui.fragment; import android.os.Bundle; import android.os.Handler; import android.support.annotation.Nullable; import android.view.View; public class BaseFullscreenFragment extends BaseFragment { private static final boolean AUTO_HIDE = true; private static final int AUTO_HIDE_DELAY_MILLIS = 3000; private static final int UI_ANIMATION_DELAY = 300; private View mDecorView; private final Handler mHideHandler = new Handler(); private final Runnable mHideRunnable = new Runnable() { @Override public void run() { mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); } }; private boolean mVisible; protected final View.OnTouchListener mDelayHideTouchListener = (view, motionEvent) -> { if (AUTO_HIDE) { delayedHide(AUTO_HIDE_DELAY_MILLIS); } return false; }; @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mDecorView = getActivity().getWindow().getDecorView(); mVisible = true; } private void toggle() { if (mVisible) { hide(); } else { show(); } } protected void hide() { mVisible = false; mHideHandler.postDelayed(mHideRunnable, UI_ANIMATION_DELAY); } protected void show() { mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); mVisible = true; mHideHandler.removeCallbacks(mHideRunnable); } protected void delayedHide(int delayMillis) { mHideHandler.removeCallbacks(mHideRunnable); mHideHandler.postDelayed(mHideRunnable, delayMillis); } }