zoukankan      html  css  js  c++  java
  • FullScreenFragment Code

    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);
    	}
    }
    

      

  • 相关阅读:
    Java知识点梳理——集合
    Java知识点梳理——装箱和拆箱
    Shiro RememberMe 1.2.4 反序列化漏洞详细复现
    哈希长度拓展攻击之De1CTF
    Discuz! ML RCE漏洞 getshell 复现
    Redis基于主从复制的RCE 4.x/5.x 复现
    WebLogic反序列化漏洞(CVE-2019-2725补丁绕过)
    【实战2】记一次获取远程桌面历程
    远程桌面远程代码执行漏洞(CVE-2019-0708)Poc
    【实战1】记一次提至administrator权限历程
  • 原文地址:https://www.cnblogs.com/spring87/p/5355645.html
Copyright © 2011-2022 走看看