share Paint between onDraw calls

This commit is contained in:
Adrian Ulrich 2018-06-28 22:05:56 +02:00
parent c3fff75a03
commit 0c51c89d22

View File

@ -28,12 +28,18 @@ import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.support.annotation.Nullable;
public class VanillaImageButton extends ImageButton {
private Context mContext;
private static int mNormalTint;
private static int mActiveTint;
private int mCircleColor;
/**
* The paint used to draw this buttons circle.
*/
private @Nullable Paint mCirclePaint;
public VanillaImageButton(Context context) {
this(context, null);
@ -51,8 +57,12 @@ public class VanillaImageButton extends ImageButton {
if (attrs != null) {
TypedArray a = mContext.obtainStyledAttributes(attrs, R.styleable.VanillaImageButton, 0, 0);
mCircleColor = a.getColor(R.styleable.VanillaImageButton_backgroundCircleColor, 0);
final int color = a.getColor(R.styleable.VanillaImageButton_backgroundCircleColor, 0);
a.recycle();
mCirclePaint = new Paint();
mCirclePaint.setColor(color);
mCirclePaint.setAntiAlias(true);
}
updateImageTint(-1);
@ -66,16 +76,14 @@ public class VanillaImageButton extends ImageButton {
@Override
public void onDraw(Canvas canvas) {
if (mCircleColor != 0) {
if (mCirclePaint != null) {
// Draw a circle on the background, but only
// if the color is set.
final int x = getWidth() / 2;
final int y = getHeight() / 2;
final float r = (x > y ? y : x);
Paint paint = new Paint();
paint.setColor(mCircleColor);
paint.setAntiAlias(true);
canvas.drawCircle(x, y, r*0.80f, paint);
canvas.drawCircle(x, y, r*0.80f, mCirclePaint);
}
super.onDraw(canvas);
}