package io.kaif.mobile.view.graphics.drawable; import android.content.Context; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; import io.kaif.mobile.R; import io.kaif.mobile.view.util.Views; public class LevelDrawable extends Drawable { public static final int MAX_NESTED_LEVEL = 7; private Paint paint; private int alpha; private int innerLevel = 1; private int paddingDp; private int lineWidthDp; private int backgroundColor; private final int paddingVertical; public LevelDrawable(Context context, int innerLevel, int backgroundColor) { this.backgroundColor = backgroundColor; this.paddingDp = (int) Views.convertDpToPixel(12, context); this.paddingVertical = (int) Views.convertDpToPixel(4, context); this.lineWidthDp = (int) Views.convertDpToPixel(2, context); this.innerLevel = Math.min(innerLevel, MAX_NESTED_LEVEL); this.paint = new Paint(); this.paint.setAntiAlias(true); this.paint.setColor(context.getResources().getColor(R.color.kaif_blue_light)); this.paint.setStyle(Paint.Style.FILL); this.paint.setStrokeWidth(lineWidthDp); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } @Override public void draw(Canvas canvas) { canvas.drawColor(backgroundColor); for (int i = 1; i < innerLevel; ++i) { final int x = paddingDp * i - lineWidthDp; canvas.drawLine(x, 0, x, canvas.getHeight(), paint); } } @Override public boolean getPadding(Rect padding) { padding.set(paddingDp * (innerLevel - 1) + lineWidthDp * 2, paddingVertical, lineWidthDp, paddingVertical); return true; } @Override public void setAlpha(int alpha) { this.alpha = alpha; } @Override public int getAlpha() { return alpha; } @Override public void setColorFilter(ColorFilter cf) { paint.setColorFilter(cf); } }