/*
 * Copyright (C) 2015 Baidu, Inc. All Rights Reserved.
 */
package com.github.mzule.ninegridlayout.sample;

import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.view.Window;
import android.view.WindowManager;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * <p/>
 * 设置Activity的信号栏为透明风格的工具类
 * <p/>
 * Created by CaoDongping on 9/17/15.
 */
public class Tinter {

    /**
     * 如果当前系统版本支持Tint,则开启,否则,不作任何事情.
     *
     * @param activity
     */
    public static void enableIfSupport(Activity activity) {
        if (isSupport()) {
            tint(activity, true);
        }
    }

    /**
     * 当前系统版本是否支持Tint
     *
     * @return
     */
    public static boolean isSupport() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
    }

    @TargetApi(19)
    private static void tint(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);


        Class<? extends Window> clazz = win.getClass();
        try {
            Class<?> layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");
            Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");
            int darkModeFlag = field.getInt(layoutParams);
            Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);
            extraFlagField.invoke(win, darkModeFlag, darkModeFlag);
        } catch (Throwable e) {
        }
    }
}