2012-03-19 2 views
0

У меня есть время подключения к зарядке аккумулятора (поле даты даты - представлено как строка) и поля TimeToCharge (секунды - могут отображаться как поплавка, если требуется) в базе данных SQLite. Я хотел бы показать график XY времени соединения по оси X и времени для заряда по оси y. Я googled и нашел много диаграмм api или jar's в android, но после того, как я реализовал несколько таких, как kiChart, я был немного смущен, что соответствовало моему требованию, какое решение для построения диаграмм в android было бы лучше всего подходит. Я не хочу отображать очень динамичный/подробный график, но затем, выполняя попытку каждого доступного графического решения, будет потреблять много времени.Отображение графика XY с использованием данных базы данных SQLite в android

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

Благодаря Omkar Ghaisas

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

+0

у вас нет поиска достаточно. Потому что есть более полезные библиотеки, доступные – MKJParekh

ответ

1

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

+0

согласны с этим. – MKJParekh

+0

Хорошо. Я определенно попробую попробовать. –

+0

Мне удалось отобразить временную диаграмму. Спасибо за предложение. Btw, я все еще не могу разрешить прокрутку графика влево-вправо. Из-за этого немногие из моих данных (дат) db и их тайминги выходят за пределы экрана. На данный момент я могу отображать только 3 точки данных, но с помощью прокрутки или какой-либо другой опции я мог бы отображать и другие точки данных. Какая техника для этого? –

Смежные вопросы