我对statusbar,actionbar的爱与恨

今天,是萌新更新android的第三次

在慕课上看到一个视频,说是可以改变statusbar的颜色,只是在color.xml里面新添加了一个新颜色,然后在style里引用即可。然而,我发现我的statusbar,在我运行完项目之后,依然是模拟器本身的黑色,雷打不动,[吐血]

折腾了一下午,发现了UI flag,好像还不错,先试了一下,想达到图片可以铺满整个屏幕的效果,连Statusbar,导航栏都覆盖过去,但是当你往上点的时候,statusbar跟导航栏又会出来,据说这叫沉浸式??

新建了一个空项目

main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"//这个是让图片铺满屏幕
        android:src="@drawable/init" />
</RelativeLayout>

由于MainActivity extends AppCompatActivity,所以当你想隐藏actionbar的时候切不可以使用getActionbar(),要使用getSupportActionbar(),就这个样子:(当然免不了要import一些包)

ActionBar actionBar = getSupportActionBar();
actionBar.hide();

当我的activity是继承Acitivity时,代码是这样子的

ActionBar actionbar = getActionBar();

actionbar.hide()

但是当我运行的时候,就闪退??摸不着头脑

扫描二维码关注公众号,回复: 6398207 查看本文章

或者是在style.xml中,改成这样子:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

然后我就跑偏了去搞了一下沉浸式:

MainActivity是这样子的:

import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {
    //
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus && Build.VERSION.SDK_INT >= 19) {
            View decorView = getWindow().getDecorView();//Decorview是整个Window界面的最顶层View
            decorView.setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }

    }
}

运行的结果:

当你下拉顶部

感觉太棒啦!!

得好好深入去了解!

重写的onWindowFocusChanged()代码来源:https://blog.csdn.net/guolin_blog/article/details/51763825

关于decorview,可以去看看这位博主的讲解https://www.cnblogs.com/yogin/p/4061050.html

猜你喜欢

转载自blog.csdn.net/weixin_39296576/article/details/89356511