1. 程式人生 > >安卓專案實戰之沉浸式狀態列的實現

安卓專案實戰之沉浸式狀態列的實現

工具類:

public class StatusBarUtil {

    /**
     * 給activity的狀態列設定顏色
     *
     * @param activity
     * @param color
     */
    public static void setStatusBarColor(Activity activity, int color) {
// 5.0 以上
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            activity.getWindow
().setStatusBarColor(color); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); View view = new View(activity); ViewGroup.LayoutParams params = new ViewGroup
.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(activity)); view.setLayoutParams(params); view.setBackgroundColor(color); ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); decorView.addView
(view); ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content); contentView.setPadding(0, getStatusBarHeight(activity), 0, 0); } } /** * 設定activity全屏,狀態列透明,內容填充到狀態列中 */ public static void setStatusBarTranslucent(Activity activity) { // 5.0 以上 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { View decorView = activity.getWindow().getDecorView(); decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); activity.getWindow().setStatusBarColor(Color.TRANSPARENT); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } } /** * 獲取狀態列的高度 */ public static int getStatusBarHeight(Activity activity) { Resources resources = activity.getResources(); int statusBarHeightId = resources.getIdentifier("status_bar_height", "dimen", "android"); return resources.getDimensionPixelOffset(statusBarHeightId); } /** * 修改狀態來字型顏色 */ public static void setStatusBarTextColor(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { activity.getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } } }