package de.jkliemann.parkendd; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; /** * Created by jkliemann on 19.11.15. */ public class SlotPopup extends Drawable { private String name; private String value; private Context context; private int density; public SlotPopup(String text, String value, Context context){ this.name = text; this.value = value; this.context = context; density = (int)this.context.getResources().getDisplayMetrics().density; } private Bitmap textAsBitmap() { Paint paint = new Paint(); paint.setTextSize(14 * this.density); //24 paint.setColor(Color.BLACK); paint.setTextAlign(Paint.Align.LEFT); float baseline = -paint.ascent(); // ascent() is negative int width = (int) (Math.max(paint.measureText(name), paint.measureText(value)) + 0.5f + 4 * this.density); // round int height = (int) (2 * baseline + paint.descent() + 0.5f + 14 * this.density); Bitmap image = Bitmap.createBitmap(width, height + this.density, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(image); Paint rpaint = new Paint(); rpaint.setColor(Color.WHITE); Rect rect = new Rect(0, 0, width, height - 9 * this.density); RectF rectf = new RectF(rect); canvas.drawRoundRect(rectf, (float) 4 * this.density, (float) 4 * this.density, rpaint); canvas.drawText(name, (width - paint.measureText(name))/2, baseline + (float)2 * this.density, paint); canvas.drawText(value, (width - paint.measureText(value))/2 - this.density, 2 * baseline + (float) 4 * this.density, paint); return image; } @Override public void draw(Canvas canvas){ } @Override protected boolean onLevelChange(int level){ invalidateSelf(); return true; } @Override public void setAlpha(int alpha){ } @Override public void setColorFilter(ColorFilter cf){ } public int getOpacity(){ return PixelFormat.TRANSLUCENT; } public Drawable getBitmapDrawable(){ Bitmap bmp = textAsBitmap(); BitmapDrawable bmpd = new BitmapDrawable(this.context.getResources(), bmp); return bmpd; } }