Android 实现沉浸式状态栏效果(systembartint库)

来源:互联网 发布:淘宝退货卖家拖延时间 编辑:程序博客网 时间:2024/05/20 19:17

本人最近做一个项目需要做到一个沉浸式状态栏效果找了很多资料,最后如愿以偿.

先附上效果图:


实现的步骤主要有以下几点(开发平台是android studio):

1.设置app全屏:
方法:在AndroidManifest.xml中设置

<application    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:label="@string/app_name"    android:theme="@android:style/Theme.Light.NoTitleBar" ></application>
2.在app中的build.gradle中引入systembartint库(如果是eclipse开发的可以去网上下载库)

dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'}
3.因为我们项目中很多地方都用到这个沉浸式状态栏,所以我们可以先写一个基类BaseActivity,然后其它Activity都继承它就ok了!

import android.annotation.TargetApi;import android.app.Activity;import android.os.Build;import android.os.Bundle;import android.view.Window;import android.view.WindowManager;import com.readystatesoftware.systembartint.SystemBarTintManager;/** * Created by shaolin on 6/22/16. */public class BaseActivity extends Activity {    private SystemBarTintManager mTintManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        initSystemBar(this);    }    public void initSystemBar(Activity activity) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            setTranslucentStatus(activity, true);        }        mTintManager = new SystemBarTintManager(activity);        mTintManager.setStatusBarTintEnabled(true);// 使用颜色资源        mTintManager.setStatusBarTintResource(R.color.theme_color);//设置状态栏的颜色        SystemBarTintManager.SystemBarConfig config = mTintManager.getConfig();        this.getWindow().getDecorView().findViewById(android.R.id.content).                setPadding(0, config.getPixelInsetTop(false),                         config.getPixelInsetRight(), config.getPixelInsetBottom());    }    //透明状态栏    @TargetApi(19)    private static void setTranslucentStatus(Activity activity, boolean on) {        Window win = activity.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);    }}

0 0
原创粉丝点击