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.
- Dibujar superposición (HUD) en Android VideoView?
- Flash en un WebView de Android - problema de capas
- PorterduffXfermode: borra una sección de un mapa de bits
- ¿Cómo establecer el tamaño de la lona?
- Android - Dibujo de un laberinto de lienzo con el movimiento de caracteres suave
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:
¿Tiene alguna idea de cómo puedo dibujar en la parte superior del Bitmap?
- Android: ¿Cómo usar el método onDraw en una clase que extiende Actividad?
- Limpiar el lienzo con Canvas.drawColor ()
- ¿Cómo animar gradiente?
- Cómo dibujar en un lienzo de vista sin upscaling artefactos cuando el padre de vista tiene un factor de escala?
- Lona de Android - Dibuja un agujero
- Dibujar un rectángulo con un gesto de movimiento
- Android onDraw () ejecutándose en todas las vistas?
- Cómo definir una altura independiente de píxeles en un método onDraw ()
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í …
- Cómo construir ffmpeg en la aplicación android?
- NullPointerException en SurfaceView.onAttachedToWindow (SurfaceView.java:207)