2012-01-16 7 views
7

こんにちはAndroid開発者 現在、私は1つのFinancialベースのチャートアプリケーションに取り組んでおり、jjoe64ブログの助けを借りてチャートを描画しています。今はリアルタイムのチャートを実装しようとしています。たとえば、グラフはサーフェスに自動的に描画され、1秒ごとまたは1分ごとにサーバー側で変更されます。これらのタスクはいずれも実装できます。これに関して私を助けてください。Android動的チャート

答えて

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

私は初心者でアンドロイドになり、動的なチャートアプリケーションを作ろうとしています。あなたの例では、あなたのコードをChartDemo.javaとどのように統合するのですか? – Pankaj

+1

triyngとは何か具体的に言えば、私は今、Java EEに切り替えましたので、より具体的にしてください.... – Carolik

+2

本当に素晴らしいチュートリアルもありますここで同じトピック(デモファイルを再利用する場合に特に便利です):http://www.youtube.com/watch?v=E9fozQ5NlSo&feature=share&list=PL2603F3CABBF5EEB0 – hornetbzz

関連する問題