1

(AchartEngine) TimeChart のシリーズ ポイントの画面座標を取得しようとしていますが、メソッド 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);
}

TimeChart をインスタンス化するときに初期化する必要があるものはありますか?

4

1 に答える 1

0

これはタイムグラフのコードです。独自のコードで 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);
    }
}

これがお役に立てば幸いです!

于 2012-03-26T10:00:44.683 に答える