博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FullScreenFragment Code
阅读量:6821 次
发布时间:2019-06-26

本文共 3156 字,大约阅读时间需要 10 分钟。

package com.dexode.fragment;import android.annotation.TargetApi;import android.app.Activity;import android.os.Build;import android.os.Bundle;import android.os.Handler;import android.support.v4.app.Fragment;import android.view.KeyEvent;import android.view.View;import android.view.View.OnSystemUiVisibilityChangeListener;import android.view.WindowManager;/** * @author Dawid Drozd *         You must manually call onKeyDown and onWindowFocusChanged. */public class FullscreenFragment extends Fragment implements Runnable {	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setFullscreen();		if (Build.VERSION.SDK_INT > 10) {			registerSystemUiVisibility();		}	}	@Override	public void onDestroy() {		super.onDestroy();		if (Build.VERSION.SDK_INT > 10) {			unregisterSystemUiVisibility();		}		exitFullscreen(getActivity());	}	public static boolean isImmersiveAvailable() {		return android.os.Build.VERSION.SDK_INT >= 19;	}	public void onWindowFocusChanged(boolean hasFocus) {		if (hasFocus) {			_handler.removeCallbacks(this);			_handler.postDelayed(this, 300);		} else {			_handler.removeCallbacks(this);		}	}	public void onKeyDown(int keyCode) {		if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP)) {			_handler.removeCallbacks(this);			_handler.postDelayed(this, 500);		}	}	@Override	public void onStop() {		_handler.removeCallbacks(this);		super.onStop();	}	@Override	public void run() {		setFullscreen();	}	public void setFullscreen() {		setFullscreen(getActivity());	}	public void setFullscreen(Activity activity) {		if (Build.VERSION.SDK_INT > 10) {			int flags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_FULLSCREEN;			if (isImmersiveAvailable()) {				flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |						 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;			}			activity.getWindow().getDecorView().setSystemUiVisibility(flags);		} else {			activity.getWindow()					.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);		}	}	public void exitFullscreen(Activity activity) {		if (Build.VERSION.SDK_INT > 10) {			activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);		} else {			activity.getWindow()					.setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,							  WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);		}	}	private Handler _handler = new Handler();	@TargetApi(Build.VERSION_CODES.HONEYCOMB)	private void registerSystemUiVisibility() {		final View decorView = getActivity().getWindow().getDecorView();		decorView.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {			@Override			public void onSystemUiVisibilityChange(int visibility) {				if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {					setFullscreen();				}			}		});	}	@TargetApi(Build.VERSION_CODES.HONEYCOMB)	private void unregisterSystemUiVisibility() {		final View decorView = getActivity().getWindow().getDecorView();		decorView.setOnSystemUiVisibilityChangeListener(null);	}}

  

转载地址:http://vyozl.baihongyu.com/

你可能感兴趣的文章