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

      

  • 相关阅读:
    第二部分:并发工具类17->ReadWriteLock:如何快速实现一个完备的缓存
    第二部分:并发工具类16->Semaphore:如何快速实现一个限流器
    第二部分:并发工具类15->Lock和condition(下)
    一款类似B站的开源弹幕播放器,太酷了
    2021年基础知识点复习
    Autofac.Core.DependencyResolutionException: An exception was thrown while activating Castle.Proxies.MiniProgramAppServiceProxy.
    一张图解析FastAdmin中的弹出窗口的功能
    vue 关闭代码严格模式,轻松运行
    vue项目严格模式下的常见错误
    mysql下载安装包及安装步骤
  • 原文地址:https://www.cnblogs.com/spring87/p/5355645.html
Copyright © 2011-2022 走看看