在很多情况下,我们都需要让项目的某个界面状态栏设置为透明或者直接隐藏起来,这样使我们的界面看起来整体美观大方一些。下面来给大家演示一下如何将Android状态栏设置为透明或者将状态栏隐藏起来。
我个人看博客是比较喜欢先看效果图,所以废话8多说,先上图:
默认效果 、半透明效果:
![](https://i-blog.csdnimg.cn/blog_migrate/dc6fdf4f048efbb22dd2ff665d4449f9.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b4bedadd0be20ebfdef00723c8589c81.jpeg)
全透明效果、状态栏隐藏效果:
![](https://i-blog.csdnimg.cn/blog_migrate/d1b21e3584a246ad9e280edc673884cc.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/8dd1e9f33a59b5ec4e6ddaa964101d58.jpeg)
铁子们看到这个效果图舒服了吗?舒服了就撸起袖子干吧!
上代码:
- 我们先在res/values/colors.xml文件中添加透明以及半透明颜色属性。
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<!--透明-->
<color name="transparent">#00000000</color>
<!--半透明-->
<color name="translucent">#22050505</color>
</resources>
- 然后新建一个StatusBar类,编写方法。这个类可以直接拿去用了。
这里我们需要编写两个初始化方法:一个是设置颜色,一个隐藏状态栏,满足不同界面的需求。
Android状态栏的设置要在版本5.0以上,所以我们的方法需要对手机SDK版本进行判断。
public class StatusBar {
private Activity activity;
//初始化activity
public StatusBar(Activity activity){
this.activity = activity;
}
//将状态栏设置为传入的color
public void setColor(int color){
if (Build.VERSION.SDK_INT >= 21) {
View view = activity.getWindow().getDecorView();
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
activity.getWindow().setStatusBarColor(activity.getResources().getColor(color));
}
}
//隐藏状态栏
public void hide(){
if (Build.VERSION.SDK_INT >= 21) {
activity.getWindow()
.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
//设置状态栏字体颜色
public void setTextColor(boolean isDarkBackground){
View decor = activity.getWindow().getDecorView();
if (isDarkBackground) {
//黑暗背景字体浅色
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
} else {
//高亮背景字体深色
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
}
- 最后在我们的MainActicity中调用该方法就行,注意的是要在SetContentView()之前调用。
实例化我们的StatusBar类,然后填写参数,将我们当前界面的activity和想要设置的颜色color传进去,即可大功告成。我就不分开写了,一起贴出来。铁子们各取所需。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StatusBar statusBar = new StatusBar(MainActivity.this);
//设置颜色为半透明
statusBar.setColor(R.color.translucent);
//设置颜色为透明
statusBar.setColor(R.color.transparent);
//隐藏状态栏
statusBar.hide();
setContentView(R.layout.activity_main);
}
}
最后喜欢的可以关注一下我!我会一直更新Android的一些知识,谢谢大家(=v=)~