Android studio改变状态栏颜色,实现全局美感

来源:互联网 发布:反向传播算法 推导 编辑:程序博客网 时间:2024/06/05 23:39

搞了几天的杂事,终于晚上可以研究研究项目了。今天坐车回来的时候打开前几天做的一小点的应用看了下,发现最上面有一块蓝色的背景,之前只是实现了应用的功能就没在意这些细节,今天才注意到这种问题。我想了想,明明我设置了隐藏标题栏的代码,为啥还有一块没去掉呢?像下面这图


经过查资料发现,原来是这最上面一小块名叫“状态栏。何为状态栏?状态栏即显示手机一系列状态信息的栏目,如手机电量,信号,时间等等信息。先前被我用requestWindowFeature(Window.FEATURE_NO_TITLE);去掉的名为“标题栏”。原来android默认的标题栏不包含这最上面的小部分,看来今天又学到了东西。

那么问题来了,既然标题栏可以去掉,那么状态栏可以吗?答案是肯定可以的。

android4.4版本之后(包含4.4),android的window(窗口)提供了新的属性,即:

WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS与WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
两个属性分别表示将状态栏设置为透明,将导航栏设置为透明状态。使用方法如下所示:

protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     initWindow();}
private void initWindow(){//初始化,将状态栏和标题栏设为透明     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){         getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);         getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);     }
状态栏虽然隐藏了,但是缺乏美感,这不是我们想要的结果,所以,只需要让其显示我们想要的颜色就可以了,在styles.xml文件的AppTheme下添加

<item name="android:fitsSystemWindows">true</item>
状态栏虽然出来了,但不是我们想要的颜色,那么需要我们声明:
private SystemBarTintManager tintManager;
并在之前的initWindow()中加上以下代码:

tintManager = new SystemBarTintManager(this);
            int statusColor=Color.parseColor("#FFFFFF");            tintManager.setStatusBarTintColor(getColor(statusColor));            tintManager.setStatusBarTintEnabled(true);

ok,这样问题就解决啦,看起来稍微好看点了。虽然看起来还是有点丑,后面我会找好看点的图标替换下那几个。

此文章仅作记录与参考,如有问题或者建议欢迎大家提出。

2 0
原创粉丝点击