Cómo dibujar una línea en ImageView en Android?

Me gustaría saber cómo dibujar una línea en ImageView como usuario deslizar su dedo?

¿Podría alguien explicar esto? O tal vez cualquier Enlace para empezar en esto.

Debe tener su propia función ImageView y anular onDraw. Usa algo como esto

public class MyImageView extends ImageView{ public MyImageView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); canvas.drawLine(0, 0, 20, 20, p); } } 

Y en su clase principal crear objeto MyImageView ; Y cuando tocas tu pantalla, llama a update(); función

Este es un ejemplo completo de cómo puede dibujar rectángulo verde sobre otra imagen:

 package CustomWidgets; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; /** * Allows to draw rectangle on ImageView. * * @author Maciej Nux Jaros */ public class DrawImageView extends ImageView { private Paint currentPaint; public boolean drawRect = false; public float left; public float top; public float right; public float bottom; public DrawImageView(Context context, AttributeSet attrs) { super(context, attrs); currentPaint = new Paint(); currentPaint.setDither(true); currentPaint.setColor(0xFF00CC00); // alpha.rgb currentPaint.setStyle(Paint.Style.STROKE); currentPaint.setStrokeJoin(Paint.Join.ROUND); currentPaint.setStrokeCap(Paint.Cap.ROUND); currentPaint.setStrokeWidth(2); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (drawRect) { canvas.drawRect(left, top, right, bottom, currentPaint); } } } 

Cuando haya definido esto, puede reemplazar ImageView con Vista anterior (widget) por ejemplo:

 <CustomWidgets.DrawImageView android:id="@+id/widgetMap" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/map_small" /> 

A continuación, puede utilizar esto, por ejemplo, en caso de contacto de la actividad que controla el diseño:

  mapImageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { DrawImageView drawView = (DrawImageView) v; // set start coords if (event.getAction() == MotionEvent.ACTION_DOWN) { drawView.left = event.getX(); drawView.top = event.getY(); // set end coords } else { drawView.right = event.getX(); drawView.bottom = event.getY(); } // draw drawView.invalidate(); drawView.drawRect = true; return true; } }); 

Por supuesto que podría hacer algunos getters y setters y otras rutinas de ingeniería de Java ;-).

Para dibujar la línea que el usuario realmente dibujó tiene que anular el dispatchTouchEvent. A partir de ese evento puede obtener las coordenadas de la línea y dibujar en el onDraw como se muestra por george.

http://developer.android.com/reference/android/app/Activity.html#dispatchTouchEvent(android.view.MotionEvent )

Echa un vistazo a la muestra FingerPaint de ApiDemos.

Al usar esto, puede dibujar líneas en ImageView tocando la pantalla.

  • Cómo agregar una imagen PNG como fondo en Android sin alteración (bandas)?
  • Elegir una foto de la galería y mostrarla en una vista de imagen
  • Android - openContactPhotoInputStream devuelve NULL para todas las ID de fotos de contacto
  • Android cambiar imagen botón de fondo
  • Android ImageView: ancho de relleno y cambio de tamaño para mantener la proporción de aspecto
  • Cambiar la forma de la imagen en android
  • Copia de Android en el clipboard / clipdata
  • android: Efecto de grabación de imágenes / Animación
  • Webview - Mejor manera de subir imágenes desde el dispositivo
  • Subida de imágenes de Android: ¿Utilizar actividad o servicio?
  • Cómo agregar un marcador pin en la vista de la imagen en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.