From 75d830d137fb4b65f4716eb58930bfefc3d04e8b Mon Sep 17 00:00:00 2001 From: seven332 Date: Tue, 28 Apr 2015 20:39:00 +0800 Subject: [PATCH] A better way to color status bar and fix screen mess sometimes in Lollipop --- .../java/com/hippo/ehviewer/widget/StatusBarLayout.java | 8 ++++++-- app/src/main/res/layout/activity_content.xml | 2 +- app/src/main/res/values-v19/themes.xml | 2 +- app/src/main/res/values-v21/themes.xml | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/widget/StatusBarLayout.java b/app/src/main/java/com/hippo/ehviewer/widget/StatusBarLayout.java index 936f1b190..d18136a2c 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/StatusBarLayout.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/StatusBarLayout.java @@ -54,12 +54,15 @@ public class StatusBarLayout extends ViewGroup { private void init(Context context, AttributeSet attrs) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - setWillNotDraw(false); mPaint = new Paint(); if (attrs != null) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.StatusBarLayout); - mPaint.setColor(a.getColor(R.styleable.StatusBarLayout_statusBarColor, Color.BLACK)); + int color = a.getColor(R.styleable.StatusBarLayout_statusBarColor, Color.BLACK); + mPaint.setColor(color); + setWillNotDraw(Color.alpha(color) == 0); a.recycle(); + } else { + setWillNotDraw(false); } } } @@ -69,6 +72,7 @@ public class StatusBarLayout extends ViewGroup { if (mStatusBarColor != color) { mStatusBarColor = color; mPaint.setColor(color); + setWillNotDraw(Color.alpha(color) == 0); invalidate(); } } diff --git a/app/src/main/res/layout/activity_content.xml b/app/src/main/res/layout/activity_content.xml index bb29651d7..efec6e926 100644 --- a/app/src/main/res/layout/activity_content.xml +++ b/app/src/main/res/layout/activity_content.xml @@ -26,7 +26,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" - auto:statusBarColor="@color/theme_primary_dark"> + auto:statusBarColor="@android:color/transparent">