Duplicar posibles:
Android How to draw a smooth line following your fingerCanvas.drawLines que muestran segmentos inconexos
Soy nuevo en Android y de programación Java y he estado jugando un poco con el desarrollo de aplicaciones móviles. Hace poco creé una vista que simplemente mantiene las líneas de trazo en el paso con los movimientos de los dedos del usuario. Sin embargo, he estado teniendo problemas con el método Canvas.drawLines.
En lugar de obtener un conjunto continuo de líneas entre todos los puntos que estoy recibiendo más de un patrón de puntos con pausas entre segmentos:
Aquí es un conjunto de muestras de datos y código simple para reproducir el emisión (datos de puntos fue tomada de una verdadera pasar el dedo):
public class SomeView extends android.view.View
{
private float[] _data = { 292.36545f, 104.37576f, 285.3567f, 112.39249f, 274.34293f, 113.39456f, 254.3179f, 115.39874f, 248.3104f, 116.40082f, 228.28535f, 118.405f, 214.26784f, 119.407104f, 211.26408f, 119.407104f, 204.25533f, 120.40918f, 202.25282f, 120.40918f, 201.25157f, 121.411255f, 199.24907f, 124.41754f, 197.24657f, 125.41962f, 196.24532f, 130.43005f, 195.24406f, 139.44885f, 197.24657f, 144.45929f };
private Paint _paint;
public SomeView(Context c, AttributeSet attrs)
{
super(c, attrs);
_paint = new Paint();
_paint.setColor(Color.BLUE);
_paint.setStrokeWidth(6);
}
@Override
public void onDraw(Canvas canvas)
{
canvas.drawLines(_data, _paint);
}
}
Después de graficar a cabo cada punto y la superposición de que encima de la línea I se dieron cuenta de que el problema es en realidad que no está siendo conectado cada punto , solo cada dos puntos En lugar de conectar el punto 1 al punto 2 al punto 3 y así sucesivamente, el método está conectando 1 a 2 y, a continuación 3 a 4 como se muestra a continuación:
I puede casi conseguir lo que quiero por dibujando llamando a drawLines
de nuevo y proporcionando una compensación esta vez para que los otros pares se junten también, pero esto parece ineficaz y generalmente torpe para mí, y la línea aún no es completamente suave (se pone un poco picado en las esquinas).
Entonces, mi pregunta es; ¿Qué estoy haciendo mal y cómo puedo dibujar una línea simple y suave dada cierta cantidad de puntos? Diablos, olvídate de los puntos, si hay una mejor manera de rastrear el dedo del usuario con una línea, soy todo oídos. Gracias por adelantado.
Me encontré con esta respuesta en una pregunta muy simpática ... espero que ayude. http://stackoverflow.com/a/8288264/2034243 – user2034243