2012-03-19 3 views
0

SQLite 데이터베이스의 배터리 연결 시간 (날짜 필드 - 문자열로 표시)과 TimeToCharge (초 - 필요하면 float으로 표시 할 수 있음) 필드가 있습니다. 나는 X 축에 연결 시간과 y 축에 충전 할 시간의 XY 그래프를 표시하고 싶다. 내가 봤 거든 안드로이드에 차트 API를 많이 발견하지만, kiChart 같은 몇 가지를 구현 한 후, 나는 조금 혼란스러워, 내 요구 사항, 안드로이드에 차트 솔루션이 가장 적합합니다. 매우 역동적이고 세부적인 그래프를 표시하고 싶지는 않지만 사용할 수있는 모든 차트 작성 솔루션을 사용해 보면 많은 시간을 소비하게됩니다.android에서 SQLite 데이터베이스 데이터를 사용하여 XY 차트 표시

그래서 필자는 필자의 요구 사항을 충족시킬 수있는 구현을 시도하고 구현할 수 있습니다. 당신이 생각하는 것이 무엇인지에 관해서는 최선의 무료 차트 작성 솔루션입니다.

감사 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 개의 데이터 포인트 만 표시 할 수 있지만 스크롤 또는 다른 옵션을 사용하면 추가 데이터 포인트도 표시 할 수 있습니다. 그것을 할 기법은 무엇입니까? –

관련 문제