Agregar un círculo de cuadro redondo en mapa de bits redondeado

Estoy tratando de crear un marco redondo alrededor de mi mapa de bits!

Esto es lo que estoy tratando de lograr!

Con este código im capaz de hacer mi ronda de mapa de bits:

public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap .getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff4242DB; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); final float roundPx = bitmap.getWidth()/2; paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); //canvas.drawCircle(0, 0, bitmap.getWidth(), paint); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } 

Lo que he intentado es dibujar un círculo (la línea outcommented) con el lienzo, pero no tuvo ningún resultado. ¿Alguien sabe cómo puedo agregar un borde circular alrededor de él?

EDITAR

Cuando uso la línea:

 canvas.drawCircle(0, 0, bitmap.getWidth(), paint); 

El efecto es, que 3 esquinas se redondean pero la parte superior izquierda permanece igual (90 grados) ¡Pero no puedo ver ninguna línea o círculo!

One Solution collect form web for “Agregar un círculo de cuadro redondo en mapa de bits redondeado”

Actualizar

Ahora hay RoundedBitmapDrawable y una fábrica correspondiente en la biblioteca de soporte que recomiendo usar, a menos que se requiera más flexibilidad.


Respuesta Original

Tienes que dibujar el círculo después del mapa de bits. Esto es lo que hizo el truco para mí.

 int w = bitmap.getWidth(); int h = bitmap.getHeight(); int radius = Math.min(h / 2, w / 2); Bitmap output = Bitmap.createBitmap(w + 8, h + 8, Config.ARGB_8888); Paint p = new Paint(); p.setAntiAlias(true); Canvas c = new Canvas(output); c.drawARGB(0, 0, 0, 0); p.setStyle(Style.FILL); c.drawCircle((w / 2) + 4, (h / 2) + 4, radius, p); p.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); c.drawBitmap(bitmap, 4, 4, p); p.setXfermode(null); p.setStyle(Style.STROKE); p.setColor(Color.WHITE); p.setStrokeWidth(3); c.drawCircle((w / 2) + 4, (h / 2) + 4, radius, p); return output; 

Esto, por supuesto, no incluye la sombra de fantasía de su ejemplo. Es posible que desee jugar un poco con los píxeles adicionales.

  • Androide, fondo, lista de capas y elemento de mapa de bits escalable
  • Redimensionar bitmap de Android manteniendo relación de aspecto
  • Convertir un lienzo en imagen de mapa de bits en android
  • Android.hardware.Camera $ EventHandler.handleMessage
  • Quiero guardar una imagen .png de AndroidPlot
  • Bitmap, Bitmap.recycle (), WeakReferences y Garbage Collection
  • Cómo convertir la matriz de bytes en Bitmap
  • Convierta la matriz de bytes NV21 en formato legible de mapa de bits
  • Recortar parte particular de la imagen en android
  • Guardar hardware acelerado android lienzo como mapa de bits
  • Error de memoria de mapa de bits - Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.