Draw bubble programmatically with arrow

2019-09-08 23:17发布

问题:

I am implementing the following Class from Stackoverflow

https://stackoverflow.com/a/20811323/1936925

but I need a bubble like this

I am trying a lot, but don't know how to do it.

What edits do I need to do in order to get the above drawable.

回答1:

Try this:

public Bitmap overlay(Bitmap image, String content) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inScaled = false;
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        //My bg bitmap, use yours
        Bitmap background = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(MapActivity.context.getResources(), R.drawable.marker_base, options), marker_width, marker_height, true);
        //your red bitmap here
        Bitmap bmOverlay = Bitmap.createBitmap(background.getWidth(), background.getHeight(), background.getConfig());
        Canvas canvas = new Canvas(bmOverlay);
        Paint paint = new Paint();
        paint.setFilterBitmap(true);
        canvas.drawBitmap(background, new Matrix(), paint);
        canvas.drawBitmap(image, 3, 3, paint);

        if (content != null)
        {
            //Use your TextSize and Color and paddings
            paint = new Paint();
            paint.setColor(Color.BLACK);
            if (content.length() < 11)
                paint.setTextSize(13);
            else
                paint.setTextSize(10);
            //30 / 28, 17 - my paddings
            canvas.drawText(content, (content.length() < 11)?30:28, 17, paint);
        }
        return bmOverlay;
    }


回答2:

Solved

mPointer.rLineTo(80, 0);
mPointer.rLineTo(0, 60);
mPointer.rLineTo(-(80), -60);
mPointer.close();