FullScreenFragment Code
2016-04-05 16:38
260 查看
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); } }
相关文章推荐
- CentOS 6.3下配置软RAID(Software RAID)
- iOS9 联系人 ContactFramework
- Impala、Hive性能简单对比测试
- hdu5294Tricks Device【最短路+网络流】
- 猜数字
- 啊哈算法学习-简化版桶排序
- exec() 方法和match方法
- java-简单的定义二位数组
- Android中TextWatcher afterTextChanged无限迭代异常
- java反射之通过反射了解集合泛型的本质
- Github 简明教程
- LeetCode 62 - Unique Paths
- Zxing扫描二维码
- Codeforces Round #247(Div. 2) B. Shower Line 暴力
- IBM Cognos 10.2 Error: RSV-SRV-0040 / RSV-SRV-0042
- python - 配置idle 的主题效果
- activemq 集群
- VS2013 EF6连接MySql需要几步?
- mysql5.7版本开始创建用户需要create user
- 《构建之法》第4章读后感