Отображение XY-диаграммы с использованием данных базы данных SQLite в Android - PullRequest
0 голосов
/ 19 марта 2012

У меня есть поля времени зарядки аккумулятора (поле даты и времени - представлено в виде строки) и поля TimeToCharge (секунды - при необходимости могут отображаться как плавающие) в базе данных SQLite.Я хотел бы отобразить график XY времени соединения на оси X и времени зарядки на оси Y.Я гуглил и нашел много графиков API и JAR-файлов в Android, но после того, как я реализовал несколько таких, как kiChart, я был немного смущен, что касалось моего требования, какое решение для построения графиков в Android лучше всего подойдет.Я не хочу отображать очень динамичный / высокодетализированный график, но затем попытка каждого доступного графического решения потребует много времени.

Итак, я могу определенно попробовать и реализовать однокоторый сработает для моего требования.Подскажите, пожалуйста, какое из них вы считаете лучшим и бесплатным решением для построения графиков.

Спасибо, Омкар Гайсас

public class BatteryGraph extends Activity 
{
/** Called when the activity is first created. */
private XYMultipleSeriesDataset mDataset;
private XYMultipleSeriesRenderer mRenderer;
List<double[]> values = new ArrayList<double[]>();
private GraphicalView mChartView;
private TimeSeries time_series;

// chart container
private LinearLayout layout;

@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.graph);

    layout = (LinearLayout) findViewById(R.id.chart);

    // create dataset and renderer
    mDataset = new XYMultipleSeriesDataset();
    mRenderer = new XYMultipleSeriesRenderer();
    mRenderer.setAxisTitleTextSize(16);
    mRenderer.setChartTitleTextSize(20);
    mRenderer.setLabelsTextSize(15);
    mRenderer.setLegendTextSize(15);
    mRenderer.setPointSize(5f);
    mRenderer.setMargins(new int[] {0,20,20,0});

    XYSeriesRenderer r = new XYSeriesRenderer();
    r.setColor(Color.YELLOW);
    r.setPointStyle(PointStyle.POINT);
    r.setFillPoints(true);
    mRenderer.addSeriesRenderer(r);
    mRenderer.setClickEnabled(true);
    mRenderer.setSelectableBuffer(20);
    mRenderer.setPanEnabled(true);
    mRenderer.setFitLegend(true);
    mRenderer.setDisplayChartValues(true);
    mRenderer.setInScroll(true);
    mRenderer.setShowGrid(true);
    mRenderer.setOrientation(Orientation.HORIZONTAL);
    mRenderer.setShowLabels(true);
    mRenderer.setXLabelsAngle(60);
    mRenderer.setXTitle("Date");
    mRenderer.setYTitle("Time in Secs");

    time_series = new TimeSeries("Charging Date vs TimeTakenToCharge");

    mDataset.addSeries(time_series);

    fillData();

    mChartView = ChartFactory.getTimeChartView(this, mDataset, mRenderer, "dd/mm/yy");

    layout.addView(mChartView);
}

private void fillData() 
{
    DatabaseAppBlock dbHelper = new DatabaseAppBlock(getApplicationContext());
    Cursor chargeCycleData = dbHelper.getAllChargeCycleData("Asc");
    int rowCount = chargeCycleData.getCount();

    if(rowCount > 0)
    {
        chargeCycleData.moveToFirst(); 
        for (int i = 0; i < rowCount ; i++) 
        {              

time_series.add(CommonFunc.GetDateFromString(chargeCycleData.getString(chargeCycleData.getColumnIndex(Constants.colChargeConnectTime))),chargeCycleData.getDouble(chargeCycleData.getColumnIndex(Constants.colTimeToCharge))); chargeCycleData.moveToPosition(i+1); }}
}}

1 Ответ

1 голос
/ 19 марта 2012

AChartEngine прост в использовании и предлагает класс TimeChart.Это XY-диаграмма с осью времени / даты, которая обрабатывает само представление даты.Демонстрация AChartEngine содержит пример кода для TimeChart.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...