2012-09-22 21 views
11

Quiero dibujar el gráfico como se muestra en la imagen adjunta.Cómo dibujar gráficos en Android?

Ya intenté con aChartEngine pero no está funcionando con éxito.

enter image description here

+0

http://stackoverflow.com/questions/424752/any-good-graphing-packages-for-android podría ayudarlo ... – nKandel

Respuesta

9

Puede crear un SurfaceView, en el que puede dibujar a Canvas en el método onDraw(). Para dibujar su gráfico, puede usar la clase Path y sus métodos son moveTo() y lineTo(). Para cambiar la apariencia de las líneas, use la clase Paint. A continuación, utilice el método Lienzos drawPath(), que toma un Path, y un objeto Paint. Creo que es un poco más fácil comenzar, que OpenGl.

Some tutorial

Actualización: he encontrado un pre tty buena biblioteca que parece fácil de usar: MPAndroidChart

+0

¿Podemos usar MPAndroidChat para trazar relaciones matemáticas como Circle también? Lo estoy preguntando porque AChartEngine no es compatible con –

+0

No usé MPAndroidChart, solo lo vi en github, y por la buena presentación y la documentación, me pareció una muy buena opción para los gráficos. Es mejor que le preguntes esto al desarrollador, él/ella podría ayudarte. –

+0

@ bali182..Gracias –

1

¿Qué tal intentar OpenGL ES?

puede crear un GraphView la que se extiende GLSurfaceView

ejemplo código-

public class GraphView extends GLSurfaceView { 

private Renderer renderer; 

public GraphView(Context context) { 
    super(context); 
    renderer = new GraphRenderer(); 
    setRenderer(renderer); 
} 
} 

Y su GraphRender

ublic class GraphRenderer implements Renderer { 

public void onDrawFrame(GL10 gl) { 
gl.glMatrixMode(GL10.GL_MODELVIEW); 
gl.glLoadIdentity(); 

GLU.gluLookAt(gl, 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 1.0f); 
gl.glColor4f(1, 0, 0, .5f); 
} 

public void onSurfaceChanged(GL10 gl, int width, int height) { 
gl.glViewport(0, 0, width, height); 

float ratio = (float) width/height; 
gl.glMatrixMode(GL10.GL_PROJECTION); 
gl.glLoadIdentity(); 
gl.glFrustumf(-ratio, ratio, -1, 1, 3, 7); 
} 

public void onSurfaceCreated(GL10 gl, EGLConfig config) { 

} 

private void drawGraph(GL10 gl) { 
gl.glLineWidth(1.0f); 

// put your code here .. 


} 

public static int loadShader(int type, String shaderCode) { 
int shader = GLES20.glCreateShader(type); 
GLES20.glShaderSource(shader, shaderCode); 
GLES20.glCompileShader(shader); 
return shader; 
} 

}

Usted puede tratar de esta manera.

+1

sí, pero cómo puede establecer el tiempo en el eje y de 0.15 min diferente? –

Cuestiones relacionadas