2012-01-16 2 views
7

Привет, Android-разработчики, В настоящее время я работаю над одним графическим приложением на основе финансов, и я рисую диаграмму с помощью блога jjoe64. но теперь я собираюсь реализовать график реального времени. например, диаграмма автоматически нарисовывается на поверхности каждую секунду или минуту, как только они делали изменения на стороне сервера. может ли кто-либо реализовать эту задачу. пожалуйста, помогите мне в этом.Android Dynamic Chart

ответ

11

Хорошо, я настоятельно рекомендую использовать AChartEngine. Это бесплатно, легкий и поддерживает множество типов диаграмм пирога, графика и т.д. Как насчет динамически обновлять таблицу я достиг этого путем добавления значения в отдельном thread.Here мой пример, это ничего не фантазии:

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);  
} 

} 

Добавьте свои собственные значения в поток. Возможно, вы захотите ознакомиться с использованием библиотеки AChartEngine. Счастливое кодирование!

+1

Я начинаю работать с android и пытаюсь сделать приложение с динамической диаграммой. В вашем примере, как мне интегрировать ваш код с ChartDemo.java – Pankaj

+1

Будьте более конкретным из того, что вы triyng, чтобы сказать. Теперь я переключился на java EE, поэтому, пожалуйста, будьте более конкретными .... – Carolik

+2

Существует также настоящий отличный учебник о (особенно полезно при повторном использовании демонстрационных файлов): http://www.youtube.com/watch?v=E9fozQ5NlSo&feature=share&list=PL2603F3CABBF5EEB0 – hornetbzz