package com.gh4a.widget;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.v4.widget.DrawerLayout;
import android.util.AttributeSet;
public class InvalidatingDrawerLayout extends DrawerLayout {
private Drawable mStatusBarBackground;
public InvalidatingDrawerLayout(Context context) {
super(context);
}
public InvalidatingDrawerLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public InvalidatingDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void setStatusBarBackground(Drawable bg) {
super.setStatusBarBackground(bg);
updateStatusBarDrawable();
}
@Override
public void setStatusBarBackground(int resId) {
super.setStatusBarBackground(resId);
updateStatusBarDrawable();
}
@Override
public void setStatusBarBackgroundColor(int color) {
super.setStatusBarBackgroundColor(color);
updateStatusBarDrawable();
}
@Override
protected boolean verifyDrawable(@NonNull Drawable who) {
return super.verifyDrawable(who) || who == mStatusBarBackground;
}
private void updateStatusBarDrawable() {
Drawable newBackground = getStatusBarBackgroundDrawable();
if (newBackground != mStatusBarBackground) {
if (mStatusBarBackground != null) {
mStatusBarBackground.setCallback(null);
}
if (newBackground != null) {
newBackground.setCallback(this);
}
mStatusBarBackground = newBackground;
}
}
}