Android沉浸式(侵入式)标题栏(状态栏)Status(三)

简介: Android沉浸式(侵入式)标题栏(状态栏)Status(三)从附录文章1,2可以看到,依靠Android系统提供的标准方案,状态栏即便在透明状态下,仍然有些半透明而不是全透明。


Android沉浸式(侵入式)标题栏(状态栏)Status(三)

从附录文章1,2可以看到,依靠Android系统提供的标准方案,状态栏即便在透明状态下,仍然有些半透明而不是全透明。本文是Android沉浸式状态栏解决方案的第三种,以Java代码实现,参考附录文章2,本文保持附录文章2的styles.xml不变,仅仅只做上层Java代码的调整,实现沉浸式状态栏全透明或者动态设置颜色,测试的MainActivity.java:

package zhangphil.myapplication;

import android.app.Activity;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //核心代码.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

            //给状态栏设置颜色。我设置透明。
            window.setStatusBarColor(Color.TRANSPARENT);
            window.setNavigationBarColor(Color.TRANSPARENT);
        }

        setContentView(R.layout.activity_main);
    }
}


MainActivity.java需要的activity_main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#e91e63"
    android:clipToPadding="false"
    android:fitsSystemWindows="true"
    android:orientation="vertical"
    android:paddingTop="50dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@android:color/white"
        android:text="zhang phil @ csdn" />
</LinearLayout>


代码运行结果:



注意:

1,本文的解决方案不在受限于MainActivity继承自标准Activity,可以继承自AppCompatActivity,但是如果MainActivity继承自AppCompatActivity,那么必须把styles.xml文件的style修改为Theme.AppCompat.*****,否则代码将崩溃,比如可以修改styles中的AppTheme:

<resources>

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

    </style>

</resources>


2,本文提供解决方案MainActivity中的那部分核心Java代码显然支持到Android 5.0即API 21或以上。



附录:
1,《Android沉浸式(侵入式)标题栏(状态栏)Status(一)》链接:http://blog.csdn.net/zhangphil/article/details/52622758 
2,《Android沉浸式(侵入式)标题栏(状态栏)Status(二)》链接:http://blog.csdn.net/zhangphil/article/details/52622971
3,《Android StatusBarUtil:设置Android系统下方虚拟键键盘透明度》链接:http://blog.csdn.net/zhangphil/article/details/51768318

相关文章
|
Android开发
android Compose中沉浸式设计、导航栏、状态栏的处理
android Compose中沉浸式设计、导航栏、状态栏的处理
1772 0
android Compose中沉浸式设计、导航栏、状态栏的处理
|
8月前
|
Java Android开发
Android 可折叠式标题栏的实现
Android 可折叠式标题栏的实现
113 0
|
11月前
|
Android开发
Android_标题栏左上角返回上一级
1 先获取到顶部导航栏 ActionBar supportActionBar=getSupportActionBar();
67 0
|
Java Android开发
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
207 0
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
|
API Android开发 对象存储
Android | 使用 ContentProvider 无侵入获取 Context
Android | 使用 ContentProvider 无侵入获取 Context
346 0
Android | 使用 ContentProvider 无侵入获取 Context
|
Android开发 UED
完美解决android软键盘挡住输入框方法,还不顶标题栏
完美解决android软键盘挡住输入框方法,还不顶标题栏
1149 0
完美解决android软键盘挡住输入框方法,还不顶标题栏
|
XML Java Android开发
Android自定义标题栏替代复杂的Actionbar
组合控件,顾名思义就是将一些小的控件组合起来形成一个新的控件,这些小的控件多是系统自带的控件。比如很多应用中普遍使用的标题栏控件,其实用的就是组合控件,那么下面将通过实现一个简单的标题栏自定义控件来说说组合控件的用法。
150 0
|
Android开发
Android沉浸式效果(隐藏标题栏)
Android沉浸式效果(隐藏标题栏)
122 0
|
Android开发
Android Studio如何去除界面默认标题栏
Android Studio如何去除界面默认标题栏
1016 0
Android Studio如何去除界面默认标题栏
|
安全 数据安全/隐私保护 Android开发
【Android 安全】DEX 加密 ( Application 替换 | 加密不侵入原则 | 替换 ActivityThread 的 mInitialApplication 成员 )
【Android 安全】DEX 加密 ( Application 替换 | 加密不侵入原则 | 替换 ActivityThread 的 mInitialApplication 成员 )
114 0