2012-01-16 45 views
7

Xin chào nhà phát triển Android, Hiện tại tôi đang làm việc trên một ứng dụng biểu đồ tài chính, và tôi vẽ biểu đồ với sự trợ giúp của blog jjoe64. nhưng bây giờ tôi sẽ triển khai biểu đồ thời gian thực. ví dụ biểu đồ được vẽ tự động trên bề mặt mỗi giây và một phút khi thực hiện thay đổi ở phía máy chủ. bất kỳ ai có thể thực hiện các loại nhiệm vụ này. Xin hãy giúp tôi về việc này.Biểu đồ động Android

Trả lời

11

Ok, tôi khuyên bạn nên sử dụng AChartEngine. Nó là miễn phí, trọng lượng nhẹ và hỗ trợ nhiều loại biểu đồ pie, đồ thị vv. Về để tự động cập nhật các biểu đồ tôi đạt được điều này bằng cách thêm các giá trị trong một thread riêng biệt.Đây là ví dụ của tôi, nó không có gì lạ mắt:

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

} 

Thêm giá trị của riêng bạn vào chuỗi. Bạn có thể muốn xem qua cách sử dụng thư viện AChartEngine. Chúc mừng mã hóa!

+1

Tôi mới bắt đầu sử dụng Android và cố gắng tạo một ứng dụng biểu đồ động. Trong ví dụ của bạn, làm cách nào để tích hợp mã của bạn với ChartDemo.java – Pankaj

+1

Cụ thể hơn về những gì bạn đang nói. Bây giờ tôi đã chuyển sang java EE vì vậy hãy cụ thể hơn ... – Carolik

+2

Ngoài ra còn có một hướng dẫn tuyệt vời về cùng một chủ đề ở đây (đặc biệt hữu ích khi sử dụng lại các tệp demo): http://www.youtube.com/watch?v=E9fozQ5NlSo&feature=share&list=PL2603F3CABBF5EEB0 – hornetbzz

Các vấn đề liên quan