当前位置:   article > 正文

Android设置透明状态栏以及隐藏状态栏_android 透明状态栏

android 透明状态栏

在很多情况下,我们都需要让项目的某个界面状态栏设置为透明或者直接隐藏起来,这样使我们的界面看起来整体美观大方一些。下面来给大家演示一下如何将Android状态栏设置为透明或者将状态栏隐藏起来。

我个人看博客是比较喜欢先看效果图,所以废话8多说,先上图:

默认效果 、半透明效果:

全透明效果、状态栏隐藏效果:

铁子们看到这个效果图舒服了吗?舒服了就撸起袖子干吧!
上代码:

  1. 我们先在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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. 然后新建一个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);
        }
	}

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  1. 最后在我们的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);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

最后喜欢的可以关注一下我!我会一直更新Android的一些知识,谢谢大家(=v=)~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/791072
推荐阅读
相关标签
  

闽ICP备14008679号