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?
- Android - calcular el ángulo del arco
- Vista personalizada de Android Vuelta de memoria de mapa de bits
- Cómo dibujar la forma de triángulo y añadirlo en la distribución relativa o lineal de android
- Cómo definir una altura independiente de píxeles en un método onDraw ()
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?
- PorterduffXfermode: borra una sección de un mapa de bits
- Por qué mi invocación de Canvas.drawText () simplemente no funciona
- Lona de Android - Dibuja un agujero
- Cómo dibujar Arco entre dos puntos en el lienzo?
- Dibujar un rectángulo con un gesto de movimiento
- problemas con Android FrameLayout cuando override onDraw
- Android onDraw () ejecutándose en todas las vistas?
- Dibuja un texto en una ruta circular en android
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)