Voglio disegnare un grafico come mostrato nell'immagine allegata.Come disegnare il grafico in Android?
Ho già provato da aChartEngine ma non funziona correttamente.
Voglio disegnare un grafico come mostrato nell'immagine allegata.Come disegnare il grafico in Android?
Ho già provato da aChartEngine ma non funziona correttamente.
È possibile creare uno SurfaceView
, in cui è possibile disegnare su un Canvas
nel metodo onDraw()
. Per disegnare il grafico, è possibile utilizzare la classe Path
ed è i metodi moveTo()
e lineTo()
. Per modificare l'aspetto delle linee, utilizzare la classe Paint
. Quindi utilizzare il metodo Canvases drawPath()
, che accetta un oggetto Path
e un oggetto Paint
. Penso che sia un po 'più facile iniziare con OpenGl.
Aggiornamento: ho trovato un pre tty bella libreria, che sembra facile da usare: MPAndroidChart
Possiamo usare MPAndroidChat per tracciare anche relazioni matematiche come Circle? Lo sto chiedendo perché AChartEngine non supporta quello –
Non ho usato MPAndroidChart, l'ho visto solo su github, e dalla bella presentazione, e la documentazione, mi è sembrata un'ottima scelta per i grafici. È meglio chiederlo allo sviluppatore, lui/lei potrebbe essere in grado di aiutarti. –
@ bali182..Grazie –
ne dite di provare OpenGL ES?
è possibile creare un GraphView che sarà estende GLSurfaceView
esempio code-
public class GraphView extends GLSurfaceView {
private Renderer renderer;
public GraphView(Context context) {
super(context);
renderer = new GraphRenderer();
setRenderer(renderer);
}
}
E il tuo 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;
}
}
Si può provare in questo modo.
sì, ma come io può impostare il tempo sull'asse y di 0,15 min diffe? –
http://stackoverflow.com/questions/424752/any-good-graphing-packages-for-android potrebbe aiutarti ... – nKandel