前言原来做的效果 。如下图(顶部有一条明显的橙色状态栏):

文章插图

文章插图
【android 状态栏透明 android设置状态栏图片】改过之后(顶部状态栏是透明的):

文章插图

文章插图
我发现网上写的一些文章 。不够简洁明了 。我整理了一下 。复制粘贴一下就可以在项目中运用 。
首先 。在你的Activity中添加下面四个方法(或者封装在一个工具类中)
/***全透状态栏*/protectedvoidsetStatusBarFullTransparent(){if(Build.VERSION.SDK_INT>=21){//21表示5.0Windowwindow=getWindow();window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);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);}elseif(Build.VERSION.SDK_INT>=19){//19表示4.4getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//虚拟键盘也透明//getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}}/***半透明状态栏*/protectedvoidsetHalfTransparent(){if(Build.VERSION.SDK_INT>=21){//21表示5.0ViewdecorView=getWindow().getDecorView();intoption=View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE;decorView.setSystemUiVisibility(option);getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);}elseif(Build.VERSION.SDK_INT>=19){//19表示4.4getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//虚拟键盘也透明//getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}}/***如果需要内容紧贴着StatusBar*应该在对应的xml布局文件中 。设置根布局fitsSystemWindows=true 。*/privateViewcontentViewGroup;protectedvoidsetFitSystemWindow(booleanfitSystemWindow){if(contentViewGroup==null){contentViewGroup=((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);}contentViewGroup.setFitsSystemWindows(fitSystemWindow);}/***为了兼容4.4的抽屉布局->透明状态栏*/protectedvoidsetDrawerLayoutFitSystemWindow(){if(Build.VERSION.SDK_INT==19){//19表示4.4intstatusBarHeight=getStatusHeight(this);if(contentViewGroup==null){contentViewGroup=((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);}if(contentViewGroupinstanceofDrawerLayout){DrawerLayoutdrawerLayout=(DrawerLayout)contentViewGroup;drawerLayout.setClipToPadding(true);drawerLayout.setFitsSystemWindows(false);for(inti=0;i<drawerLayout.getChildCount();i++){Viewchild=drawerLayout.getChildAt(i);child.setFitsSystemWindows(false);child.setPadding(0,statusBarHeight,0,0);}}}}
然后 。在Activity的onCreate()方法中调用即可 。示例如下:
Activity:
publicclassTestActivityextendsappCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_test);setHalfTransparent();setFitSystemWindow(false);}protectedvoidsetHalfTransparent()...protectedvoidsetStatusBarFullTransparent()...protectedvoidsetFitSystemWindow()...protectedvoidsetDrawerLayoutFitSystemWindow()...}
布局文件:
<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutandroid:id="@+id/drawerLayout"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bg_start"><Buttonandroid:id="@+id/button"android:layout_width="100dp"android:layout_height="40dp"android:layout_marginLeft="50dp"android:background="#F86254"android:text="button"android:textColor="@color/white"/></LinearLayout>
1.未做任何设置可见 。Android5.0以上由于默认是Material Design 。顶部是蓝色状态栏 。而5.0以下 。默认都是黑色 。而且无法修改 。

文章插图

文章插图
2.半透明状态栏,fitSystemWindows=false@Overridepublicvoidinit(BundlesavedInstanceState){setHalfTransparent();setFitSystemWindow(false);}

文章插图

文章插图
可见 。5.0以上蓝色状态栏没了 。变成了半透明的黑色 。而内容区域则有了全屏的效果 。
推荐阅读
- 你认为最悲伤的句子是什么?
- 哪个牌子的护肤品补水效果好且适合敏感肌使用?
- 表示伤心的句子有哪些?
- 爱情名言名句优美句子 打动人心的爱情句子
- 什么护肤品补水和锁水的效果好?
- 如何用一句话形容你很悲伤?
- 王者荣耀画质怎么调最好,王者荣耀界面操作怎么设置
- 日本有哪些补水保湿效果好的护肤品推荐?
- 你看过的最伤感的一句话,还记得吗?