(解决)android不同版本的【沉浸式状态栏】(4.4/5.0/5.1/6.0)
来源:互联网 发布:贾巴尔数据 编辑:程序博客网 时间:2024/05/16 10:50
介绍:
各个版本有略微的区别,下面我就根据自己的测试和调试写出对应的方法:
4.4以上(API>=19)的前提下,任选以下方法:
- 1.法1:只要调用一个方法,setContentView前:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- 2.法2:写一个基类,然后对于想要沉浸的菜单栏,继承其即可。
public class ActivityBase extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);//只对api19以上版本有效 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { setTranslucentStatus(true); } //为状态栏着色 SystemBarTintManager tintManager = new SystemBarTintManager(this); tintManager.setStatusBarTintEnabled(true);//状态栏颜色 tintManager.setStatusBarTintResource(Color.TRANSPARENT); } @TargetApi(19) private void setTranslucentStatus(boolean on) { Window win = getWindow(); WindowManager.LayoutParams winParams = win.getAttributes(); final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; if (on) { winParams.flags |= bits; } else { winParams.flags &= ~bits; } win.setAttributes(winParams); }}
(PS:其中上面的“SystemBarTintManager 类”大家百度一下即可下载)
api >21(5.0以上的)
对于api >21(5.0以上的),如果用上述的方法,也能看到透明,但是有一个暗底,所以看起来不算完全的沉浸式,所以采用以下方法即可。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mActivitUtil = ActivitUtil.getActivitUtil(); mActivitUtil.addActivit(this); //沉浸式状态栏在API>=19的前提下,只要调用一个方法// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //api 21(5.0)以上需要添加此判断,可以不要上面那句 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);// window.setStatusBarColor(Color.TRANSPARENT);//6.0的真机上反而是用这句生效 window.setStatusBarColor(getResources().getColor(R.color.title_color)); } //还要设置偏移,否则状态栏和内容重叠 View view = View.inflate(this, R.layout.activity_main, null); LinearLayout ll = (LinearLayout) view.findViewById(R.id.ll); ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); LinearLayout content = new LinearLayout(this); content.setPadding(0,getStatusBarHeight(),0,0); content.addView(ll,lp); setContentView(content); } /** * 获取状态栏高度 * * @return */ private int getStatusBarHeight() { int result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } return result; } /** * 状态栏添加到布局中,发现不加也成功 * */// private void addStatusBar(ViewGroup viewGroup) {// mStatusBar = new View(this);// LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(// ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight());// mStatusBar.setLayoutParams(lp);// mStatusBar.setBackgroundColor(Color.TRANSPARENT);// viewGroup.addView(mStatusBar);// }
0 0
- (解决)android不同版本的【沉浸式状态栏】(4.4/5.0/5.1/6.0)
- android 沉浸式状态栏-4.4版本qq
- 沉浸式状态栏适配不同的版本
- 沉浸式状态栏适配不同的版本
- Android沉浸式状态栏5.0版本及透明状态栏兼容4.4
- Android 透明(沉浸)状态栏 各个版本的完全解决方案
- Android 4.4 沉浸式状态栏的实现
- Android之4.4版本以上沉浸式状态栏实现
- Android沉浸式状态栏一体化最终版本
- Android沉浸式状态栏版本兼容问题
- android沉浸式状态栏(像iOS一样的状态栏)
- 解决Android 4.4沉浸式状态栏一些小问题
- Android 6.0 沉浸式状态栏
- coordinatelayout android:fitsSystemWindows 沉浸式状态栏在android4.4 和 4.4以上版本的坑
- Android沉浸式状态栏(透明状态栏)
- android状态栏一体化、沉浸式状态栏(兼容低版本)
- android状态栏一体化、沉浸式状态栏(兼容低版本)
- android状态栏一体化、沉浸式状态栏(兼容低版本)
- js检测移动端(先存着)
- Java知识点24
- 7.1 ipu_device.c分析(一)---流程分析
- Linux基本命令练习(10)---wget、less
- A. Tricky Sum CodeForces 598A
- (解决)android不同版本的【沉浸式状态栏】(4.4/5.0/5.1/6.0)
- 纯真IP数据库格式详解
- 融云在移动端获取token(swift)版
- 安装myeclipse
- Java知识点25
- EXCEL-VBA:根据单元格字体、背景颜色计数、求和
- hdu2588(欧拉函数)
- 在Linux平台上搭建EasyDarwin,编译代码并简单部署
- Java关键字之this