El método ImageView: onDraw dibuja "detrás" del fondo de la imagen, no en la parte superior

Aquí está el código de una simple extensión de un ImageView que permite al usuario dibujar con el dedo.

public class MyImageView extends ImageView { List<Point> points = new ArrayList<Point>(); Paint paint = new Paint(); public MyImageView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void onDraw(Canvas canvas) { for (Point point : points) { canvas.drawCircle(point.x, point.y, 5, paint); // Log.d(TAG, "Painting: "+point); } super.onDraw(canvas); } @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); Point point = new Point(); point.x = event.getX(); point.y = event.getY(); points.add(point); invalidate(); Log.d("", "point: " + point); return true; } class Point { float x, y; @Override public String toString() { return x + ", " + y; } } } 

Este trabajo bastante bien.

Ahora, quiero usar este código para dibujar en la parte superior de un mapa de bits.

Solía:

 MyImageView ivPic = (MyImageView) dialog.findViewById(R.id.ivPic); ivPic.setImageBitmap(picture); 

Pero el dibujo se dibuja "detrás" del mapa de bits:

Introduzca aquí la descripción de la imagen

¿Tiene alguna idea de cómo puedo dibujar en la parte superior del Bitmap?

He cambiado el orden en el método onDraw , puse super.onDraw(canvas); Al principio y creo que funciona ahora

Reemplazar y utilizar el método dispatchDraw , lo usé para dibujar sobre vistas

Respondo a mi propia pregunta, acaba de encontrar la respuesta:

 ivPic.setBackgroundDrawable(new BitmapDrawable(getResources(),picture)); 

No sé si esa es la mejor práctica pero eso funciona para mí …

  • Tratando de obtener el tamaño de visualización de una imagen en un ImageView
  • ¿Estoy invalidando toda la pantalla en cada llamada?
  • View.onDraw () - ¿cuándo se llama?
  • OnDraw Vista personalizada dentro de un Scrollview
  • Dibujo 2D eficiente en Android
  • Android - Dibujo de un laberinto de lienzo con el movimiento de caracteres suave
  • ¿Cómo animar gradiente?
  • Android SweepGradient
  • Cómo utilizar el teclado suave android en SurfaceView
  • Flash en un WebView de Android - problema de capas
  • Cómo dibujar en un lienzo de vista sin upscaling artefactos cuando el padre de vista tiene un factor de escala?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.