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. 然后新建一个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. 最后在我们的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=)~

  • 40
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值