Me gustaría saber cómo dibujar una línea en ImageView mientras el usuario desliza su dedo?Cómo dibujar una línea en ImageView en Android?
¿Podría cualquier cuerpo explicar esto? O tal vez cualquier Enlace para comenzar con esto.
Me gustaría saber cómo dibujar una línea en ImageView mientras el usuario desliza su dedo?Cómo dibujar una línea en ImageView en Android?
¿Podría cualquier cuerpo explicar esto? O tal vez cualquier Enlace para comenzar con esto.
Debe tener su propio ImageView y anular la función onDraw. Usar 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 el objeto MyImageView
; y cuando toca su pantalla, llame a la función update();
Hola george, ¿quisiste decir llamando al método de actualización en el evento onTouch()? Lo siento por preguntar mucho, soy nuevo en esto. – user776550
Sí, lo digo en serio. No hay problema, puede preguntar cuánto desea)) – George
Debe anular OnTouchListener y en su función OnTouch llamando al – George
Para dibujar la línea que dibujó el usuario, debe anular el dispatchTouchEvent. A partir de ese evento, puede obtener las coordenadas de la línea y dibujarlas en el onDraw como lo muestra george.
Tome un vistazo a la muestra ApiDemos FingerPaint.
Al usar esto, puede dibujar una línea en ImageView tocando en la pantalla.
Este es un ejemplo completo de cómo se puede dibujar el 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.r.g.b
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 esta definido que puede reemplazar ImageView con vistas anteriormente (Widget), por ejemplo:
<CustomWidgets.DrawImageView
android:id="@+id/widgetMap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/map_small"
/>
continuación, puede utilizar esta por ejemplo en caso de toque 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, usted puede hacer algunos getters y setters y otras rutinas de sobre-ingeniería de Java ;-).
¿desea dibujar cierta línea o hacer algo como pintar sobre ella? –