Home Force Android canvas to be on top of bitmap used for Google Maps markers

Force Android canvas to be on top of bitmap used for Google Maps markers

user1202032
1#
user1202032 Published in 2017-11-14 22:56:03Z
 I'm drawing a circle with some text on top of a bitmap, and then using the bitmap as the icon for a Google Maps marker/pin. Most of the time, it works perfectly, but sometimes the circle+text will show up BEHIND the bitmap - not good. It seems to consistently happen if i navigate to a new activity, and then go back. Code: // Make room for the circle Bitmap myBitmap = Bitmap.createBitmap(dstWidth, dstHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(myBitmap); Matrix matrix = new Matrix(); int xMatrix = xPadding / 2; matrix.setRectToRect(new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight()), new RectF(xMatrix,yPadding, dstWidth - xMatrix, dstHeight), Matrix.ScaleToFit.CENTER); canvas.drawBitmap(bitmap, matrix, null); canvas.drawCircle(xPos, yPos, 30, backgroundPaint); if(_badge != null && _badge.equalsIgnoreCase("") == false) { canvas.drawText(_badge, xPos, yPos+10, textPaint); } return myBitmap;  Is there a way i can force my circle+text to be on top? Perhaps i should try to make my bitmap immutable (how do i do this?)
Ibrahim
2#
 Identifying the issue: It's seems that you "don't clean after finishing your work". What is that mean?: You are correctly showing circle and text on the top. But after close activity/fragment and reopen the map you get weird result because of drawing new canvas above last one. And you're doing that every time you open the map so it will be more weird of you navigated from map fragment much times. Why that happened?: Having multiple views (old canvas + old text and circle plus news of them) do that. Solution: Clear what you have made!. One of the easiest ways is to clear your map in onStop() or onDestroy() : mMap.clear(). Other way: Is to draw canvas and objects only if needed.