两个方法搞定透明状态栏

简介: 两个方法搞定透明状态栏

只调用两个方法即可搞定透明状态栏
说明:

  1. 以下三个方法都是静态方法, 放到你项目的工具类中调用即可;
/**
 * 透明状态栏(界面会展示在状态栏下面, 此时状态栏挡住了我们的界面上的一些东西, 需要处理)
 * 需要在 setContentView()方法之前调用, 否则程序会崩溃

 */
public static void alphaTask(Activity context) {
    context.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window window = context.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);
    }
}

/**
 * 获取系统状态栏的高度(目的是让被系统状态栏挡住的内容移动到状态栏下面)
 */
public static int getStatusBarHight(Context context) {
    int statusBarHeight = -1;
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
    }
    return statusBarHeight;
}

/**
 * 设置ActionBar距离顶部的距离为系统状态栏的高度距离(此时, 状态栏已经不会挡住我们的界面了)
 */
public static void initActionBar(Context context, View actionBar) {
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) actionBar.getLayoutParams();
    params.setMargins(0, getStatusBarHight(context), 0, 0);
}

单个activity调用即可, 如果要在BaseActivity中封装该功能, 在BaseActivity的onCreate方法中的setContentView方法之前调用alphaTask方法, 然后在BaseActivity中封装抽象方法, 将actionBar的view对象传入, 强制子类实现, 即可;

目录
相关文章
|
14天前
|
缓存 前端开发 JavaScript
componentWillMount()方法有什么用
componentWillMount() 是 React 组件生命周期中的一个方法,在组件首次渲染之前调用。可以用来进行初始化操作,如设置状态或加载数据,但不建议在此方法中执行复杂的异步操作。注意,此方法在 React 16.3 版本后已被标记为不安全,建议使用替代方法。
|
2月前
|
机器学习/深度学习 自然语言处理 API
10-22|处理脏话其他方法
10-22|处理脏话其他方法
是的方法
第三份阿发顺大丰阿萨德
|
SQL 数据库
SqlCommand.ExecuteNonQuery 方法
SqlCommand的一个类,用于包含update、insert、delete、select的Transact-sql 语句中来修改数据库中的数据,并返回结果。
|
存储 数据处理 数据库
结构化分析方法
1.概述 结构化方法是世界上第一个软件开发方法学,用来指导从需求分析、到设计开发各个阶段该怎么样做,采用什么样的方法,产出什么样的结果,从而保证整个软件开发周期可控。
162 0
|
JavaScript 前端开发
getMonth() 方法
getMonth() 方法
176 0
|
C语言 C++
求公因数的方法(C/C++)
求公因数的方法(C/C++)
318 0
求公因数的方法(C/C++)
|
存储 JavaScript 前端开发
JavaScript继承的几种方法
JavaScript继承的几种方法
136 0
JavaScript继承的几种方法
|
Java 开发者
|
移动开发 JavaScript 前端开发