package org.wikipedia.drawable;
import android.content.res.ColorStateList;
import android.graphics.ColorFilter;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LevelListDrawable;
import android.os.Build;
import android.support.annotation.Nullable;
/** A {@link LevelListDrawable} that applies color filters and tints to each level. */
public class AppLevelListDrawable extends LevelListDrawable {
@Nullable private ColorFilter colorFilter;
@Nullable private ColorStateList tint;
@Override
@Nullable
public ColorFilter getColorFilter() {
return colorFilter;
}
@Override
public void setColorFilter(@Nullable ColorFilter colorFilter) {
super.setColorFilter(colorFilter);
this.colorFilter = colorFilter;
}
@Override
public void setTintList(@Nullable ColorStateList tint) {
super.setTintList(tint);
this.tint = tint;
}
@Override
protected boolean onLevelChange(int level) {
boolean invalidate = super.onLevelChange(level);
invalidate |= updateLevelTint(getCurrent());
return invalidate;
}
private boolean updateLevelTint(Drawable drawable) {
boolean invalidate = false;
if (drawable != null) {
drawable.setColorFilter(colorFilter);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
drawable.setTintList(tint);
}
invalidate = true;
}
return invalidate;
}
}