2012-01-16 13 views
7

हाय एंड्रॉइड डेवलपर्स, वर्तमान में मैं एक वित्तीय आधारित चार्ट एप्लिकेशन पर काम कर रहा हूं, और मैं jjoe64 ब्लॉग की मदद से चार्ट खींचता हूं। लेकिन अब मैं वास्तविक समय चार्ट लागू करने जा रहा हूं। उदाहरण के लिए चार्ट सतह पर स्वचालित रूप से खींचा जाता है प्रत्येक सर्वर या एक मिनट में सर्वर पक्ष में बदलाव किए जाते हैं। क्या कोई इस तरह के कार्य को लागू कर सकता है। कृपया इसके बारे में मेरी मदद करें।एंड्रॉइड डायनामिक चार्ट

उत्तर

11

ठीक है, मैं दृढ़ता से AChartEngine का उपयोग करने की सलाह देता हूं।

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

} 
: यह नि: शुल्क बहुत हल्का है और चार्ट पाई, ग्राफ आदि के रूप में के बारे में गतिशील चार्ट मैं एक अलग thread.Here में मानों को जोड़ने कर यह उपलब्धि हासिल अद्यतन करने के लिए मेरे उदाहरण है के कई प्रकार का समर्थन करता है, यह कल्पना कुछ भी नहीं है

अपने खुद के मूल्य धागे में जोड़ें। आप AChartEngine लाइब्रेरी का उपयोग कैसे करें इस पर एक नज़र रखना चाहते हैं। हैप्पी कोडिंग!

+1

मैं एंड्रॉइड के लिए शुरुआत कर रहा हूं, और गतिशील चार्ट एप्लिकेशन बनाने की कोशिश कर रहा हूं। आपके उदाहरण में, मैं चार्ट कोडो.जावा – Pankaj

+1

के साथ अपना कोड कैसे एकीकृत कर सकता हूं, जो आप कहने के लिए ट्रायिंग कर रहे हैं उससे अधिक विशिष्ट रहें। अब मैं जावा ईई पर स्विच कर रहा हूं, इसलिए कृपया अधिक विशिष्ट रहें .... – Carolik

+2

यहां एक असली महान ट्यूटोरियल भी है यहां एक ही विषय (डेमो फ़ाइलों का पुन: उपयोग करते समय विशेष रूप से उपयोगी): http://www.youtube.com/watch?v=E9fozQ5NlSo&feature=share&list=PL2603F3CABBF5EEB0 – hornetbzz