在很多情况下,我们都需要让项目的某个界面状态栏设置为透明或者直接隐藏起来,这样使我们的界面看起来整体美观大方一些。下面来给大家演示一下如何将Android状态栏设置为透明或者将状态栏隐藏起来。
我个人看博客是比较喜欢先看效果图,所以废话8多说,先上图:
默认效果 、半透明效果:
全透明效果、状态栏隐藏效果:
铁子们看到这个效果图舒服了吗?舒服了就撸起袖子干吧!
上代码:
我们先在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;//初始化activitypublic StatusBar(Activity activity){this.activity = activity;}//将状态栏设置为传入的colorpublic 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 {@Overrideprotected 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=)~