fab: properly get theme color

Harsh changed this before, but my original way is what the support
library does internally.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld 2018-06-05 02:36:52 +02:00
parent dea60e13c0
commit d636e13717

View File

@ -7,7 +7,6 @@
package com.wireguard.android.widget.fab; package com.wireguard.android.widget.fab;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.graphics.*; import android.graphics.*;
import android.graphics.Paint.Style; import android.graphics.Paint.Style;
@ -19,7 +18,6 @@ import android.support.annotation.*;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.v7.widget.AppCompatImageButton; import android.support.v7.widget.AppCompatImageButton;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.TextView; import android.widget.TextView;
import com.wireguard.android.R; import com.wireguard.android.R;
@ -60,12 +58,12 @@ public class FloatingActionButton extends AppCompatImageButton {
} }
public static int getColorFromTheme(final Context context, final int themeResource, @ColorRes final int fallback) { public static int getColorFromTheme(final Context context, final int themeResource, @ColorRes final int fallback) {
final TypedValue typedValue = new TypedValue(); final TypedArray a = context.obtainStyledAttributes(new int[]{themeResource});
final Resources.Theme theme = context.getTheme(); try {
theme.resolveAttribute(themeResource, typedValue, true); return a.getColor(0, ContextCompat.getColor(context, fallback));
@ColorInt final int color = typedValue.data; } finally {
return color == 0 ? fallback : color; a.recycle();
}
} }
void init(final Context context, final AttributeSet attributeSet) { void init(final Context context, final AttributeSet attributeSet) {
@ -222,6 +220,7 @@ public class FloatingActionButton extends AppCompatImageButton {
final LayerDrawable layerDrawable = new LayerDrawable( final LayerDrawable layerDrawable = new LayerDrawable(
new Drawable[]{ new Drawable[]{
//TODO(msf); replace these pngs with programatic elevation
getResources().getDrawable(mSize == SIZE_NORMAL ? R.drawable.fab_bg_normal : R.drawable.fab_bg_mini, null), getResources().getDrawable(mSize == SIZE_NORMAL ? R.drawable.fab_bg_normal : R.drawable.fab_bg_mini, null),
createFillDrawable(strokeWidth), createFillDrawable(strokeWidth),
createOuterStrokeDrawable(strokeWidth), createOuterStrokeDrawable(strokeWidth),