Android中沉浸式状态栏,改变状态栏颜色类似QQ样式

1、使用该功能需要使用到第三方库SystemBarTint

下载地址:https://github.com/jgilfelt/SystemBarTint


2、需要在AndroidMainfest文件中Application设置样式

android:theme="@android:style/Theme.Light.NoTitleBar"

3、第一种调用方法,常用调用方法,效果与QQ有些差异


java代码:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_match_actionbar);
                //只对api19以上版本有效
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            setTranslucentStatus(true);
        }
                //为状态栏着色
        SystemBarTintManager tintManager = new SystemBarTintManager(this);
        tintManager.setStatusBarTintEnabled(true);
        tintManager.setStatusBarTintColor(Color.RED);
    }
    @TargetApi(19) 
    private void setTranslucentStatus(boolean on) {
        Window win = getWindow();
        WindowManager.LayoutParams winParams = win.getAttributes();
        final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
        if (on) {
            winParams.flags |= bits;
        } else {
            winParams.flags &= ~bits;
        }
        win.setAttributes(winParams);
}

效果图:


状态栏将布局挡住了, 在布局最外层Layou中加上:
android:fitsSystemWindows="true"

效果图:


4、第二种方法,类似于QQ的效果


java代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 只对api19以上版本有效
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
}
}
@TargetApi(19)
private void setTranslucentStatus(boolean on) {
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (on) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}

XML代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF0000"
    android:fitsSystemWindows="true"
    android:paddingTop="@dimen/activity_vertical_margin" >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#FFFFFF"
        android:orientation="vertical" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    </LinearLayout>
</RelativeLayout>

在布局最外层设置    

android:background="#FF0000"
android:fitsSystemWindows="true"

背景设置在下层Layout,不然就整体颜色一致了,这样设置状态栏与整个界面为一个整体,页面滑动状态栏也会跟随滑动。



效果图:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android去除状态栏,有几种方法可以实现。首先,你可以在Java代码使用`requestWindowFeature(Window.FEATURE_NO_TITLE);`来去除当前Activity的标题栏,但无法去除状态栏。这个方法需要在`setContentView(R.layout.activity_splash);`之前添加。其次,你可以在清单文件的application标签使用`android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"`来改变整个应用的状态栏和通知栏的显示情况。另外,你也可以在清单文件的Activity标签使用`android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"`来只改变一个页面的状态栏和通知栏的显示情况。需要注意的是,如果你在清单文件配置主题,那么该Activity必须继承自Activity类。如果你使用的是Android Studio默认创建的Activity,那么它继承的父类是V7包下的AppCompatActivity。另外,你还可以在修改AndroidManifest.xml文件的`application`标签的`android:theme`属性,将其设置为`@style/AppTheme`。以上是几种去除Android状态栏的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Android 去掉状态栏的方法](https://blog.csdn.net/LLLxq1296/article/details/77146155)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [android 去掉顶部状态栏及全屏](https://blog.csdn.net/diuping20110926/article/details/126659226)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值