2012-01-16 14 views
7

Ciao sviluppatori Android, Attualmente sto lavorando su un'applicazione grafica basata su Finanziaria e disegno il grafico con l'aiuto del blog jjoe64. ma ora ho intenzione di implementare il grafico in tempo reale. per esempio il grafico viene disegnato automaticamente sulla superficie ogni secondo o un minuto dopo aver apportato modifiche sul lato server. qualcuno può implementare questo tipo di compito. per favore aiutami riguardo a questo.Grafico dinamico Android

risposta

11

Ok, consiglio vivamente di utilizzare AChartEngine. E 'gratuito, leggero e supporta molti tipi di grafici a torta, grafico ecc Come per aggiornare in modo dinamico il grafico ho raggiunto questo con l'aggiunta di valori in una thread.Here a parte è il mio esempio, è niente di particolare:

package my.pack; 

import java.util.Date; 
import java.util.Random; 

import org.achartengine.ChartFactory; 
import org.achartengine.GraphicalView; 
import org.achartengine.chart.PointStyle; 
import org.achartengine.model.TimeSeries; 
import org.achartengine.model.XYMultipleSeriesDataset; 
import org.achartengine.renderer.XYMultipleSeriesRenderer; 
import org.achartengine.renderer.XYSeriesRenderer; 

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 

public class ChartsActivity extends Activity { 

private static Random random = new Random(); 

private static TimeSeries timeSeries; 
private static XYMultipleSeriesDataset dataset; 
private static XYMultipleSeriesRenderer renderer; 
private static XYSeriesRenderer rendererSeries; 
private static GraphicalView view; 
private static Thread mThread; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);  

    dataset = new XYMultipleSeriesDataset(); 

    renderer = new XYMultipleSeriesRenderer(); 
    renderer.setAxesColor(Color.BLUE); 
    renderer.setAxisTitleTextSize(16); 
    renderer.setChartTitle("Time"); 
    renderer.setChartTitleTextSize(15); 
    renderer.setFitLegend(true); 
    renderer.setGridColor(Color.LTGRAY); 
    renderer.setPanEnabled(true, true); 
    renderer.setPointSize(10); 
    renderer.setXTitle("Time"); 
    renderer.setYTitle("Number"); 
    renderer.setMargins(new int []{20, 30, 15, 0}); 
    renderer.setZoomButtonsVisible(true); 
    renderer.setBarSpacing(10); 
    renderer.setShowGrid(true); 


    rendererSeries = new XYSeriesRenderer(); 
    rendererSeries.setColor(Color.RED); 
    renderer.addSeriesRenderer(rendererSeries); 
    rendererSeries.setFillPoints(true); 
    rendererSeries.setPointStyle(PointStyle.CIRCLE); 

    timeSeries = new TimeSeries("Random"); 
    mThread = new Thread(){ 
     public void run(){ 
      while(true){ 
      try { 
       Thread.sleep(2000L); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
       timeSeries.add(new Date(), random.nextInt(10)); 
       view.repaint(); 
      } 
     } 
    }; 
    mThread.start(); 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    dataset.addSeries(timeSeries); 
    view = ChartFactory.getTimeChartView(this, dataset, renderer, "Test"); 
    view.refreshDrawableState(); 
    view.repaint(); 
    setContentView(view);  
} 

} 

Aggiungi i tuoi valori alla discussione. Puoi dare un'occhiata a come usare la libreria AChartEngine. Codifica felice!

+1

Sono principiante per Android e sto provando a creare un'applicazione di grafico dinamico. Nel tuo esempio, come faccio ad integrare il tuo codice con ChartDemo.java – Pankaj

+1

Sii più specifico di ciò che stai dicendo. Ora passiamo a Java EE quindi per favore sii più specifico ... – Carolik

+2

C'è anche un vero e proprio tutorial su lo stesso argomento qui (particolarmente utile quando si riutilizzano i file demo): http://www.youtube.com/watch?v=E9fozQ5NlSo&feature=share&list=PL2603F3CABBF5EEB0 – hornetbzz

Problemi correlati