2012-03-03 105 views
1

我試圖檢索(AchartEngine)TimeChart的系列點的屏幕座標,但方法toScreenPoint總是返回一個NullPointerException。Achartengine XYChart.toScreenPoint始終返回NULLPointerException

下面是代碼:

TimeChart chart = new TimeChart(dataSet, renderer); 
XYSeries serie = dataSet.getSeriesAt(0); 

for(int u=0;u<serie.getItemCount();u++) 
{ 
    double dy = serie.getY(u); 
    double dx = serie.getX(u); 

    double[] pos = chart.toScreenPoint(new double[]{dx,dy}, 0); 
} 

有什麼實例的時間圖時,我應該initialiize?

回答

0

這是一個timegraph的代碼。你需要用你自己的代碼編輯fillData。

private void chartView() { 

     layout = (RelativeLayout) findViewById(R.id.graph); 

     // create dataset and renderer 
     mDataset = new XYMultipleSeriesDataset(); 
     mRenderer = new XYMultipleSeriesRenderer(); 
     mRenderer.setAxisTitleTextSize(16); 
     mRenderer.setChartTitleTextSize(20); 
     mRenderer.setLabelsTextSize(15); 
     mRenderer.setLegendTextSize(15); 
     mRenderer.setPointSize(3f); 

     XYSeriesRenderer r = new XYSeriesRenderer(); 
     r.setColor(Color.CYAN); 
     r.setPointStyle(PointStyle.DIAMOND); 
     r.setFillPoints(true); 
     mRenderer.addSeriesRenderer(r); 
     mRenderer.setClickEnabled(true); 
     mRenderer.setSelectableBuffer(20); 
     mRenderer.setPanEnabled(true); 

     time_series = new TimeSeries("Weight"); 

     mDataset.addSeries(time_series); 

     fillData(); 

     mChartView = ChartFactory.getTimeChartView(this, mDataset, mRenderer, 
       "H:mm:ss"); 

     layout.addView(mChartView); 
    } 

private void fillData() { 
    long value = new Date().getTime() - 3 * TimeChart.DAY; 
    for (int i = 0; i < 100; i++) { 
     time_series.add(new Date(value + i * TimeChart.DAY/4), i); 
    } 
} 

希望這可以幫助你!

+0

謝謝你的幫助,但我想我失去了一些東西。 我已經有了mChartView,但是我找不到一個方法從它獲取TimeChart對象(使用toScreenPoint()這是TimeChart類的方法)。 – on35 2012-03-26 14:00:46

+0

'public double [] toRealPoint(float screenX,float screenY,int scale)' '將屏幕點轉換爲實際座標點。 參數: screenX - 屏幕的x軸的值 screenY - 屏幕Y軸值 返回: 真實座標point' – sweggersen 2012-03-26 19:01:33

+0

我所需要的屏幕座標 實施例: onTouch(視圖V,MotionEvent事件){ screenX = event.getX(); screenY = event.getX(); } 不是真正的座標 – on35 2012-03-27 07:21:34