Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中使用SQLite数据库数据显示XY图表_Android_Android Activity - Fatal编程技术网

在android中使用SQLite数据库数据显示XY图表

在android中使用SQLite数据库数据显示XY图表,android,android-activity,Android,Android Activity,我在SQLite数据库中有电池充电连接时间(日期时间字段-表示为字符串)和时间充电(秒-如果需要可以显示为浮动)字段。我想在X轴上显示连接时间的XY图,在y轴上显示充电时间。我在谷歌上搜索并发现了很多android中的图表api或jar,但在实现了一些类似kiChart的api或jar后,我有点困惑,这违背了我的要求,android中的哪个图表解决方案最适合我。我不想显示一个非常动态/高细节的图表,但是尝试每一个可用的图表解决方案都会耗费大量时间 因此,我可以明确地尝试并实现一个符合我需求的方案

我在SQLite数据库中有电池充电连接时间(日期时间字段-表示为字符串)和时间充电(秒-如果需要可以显示为浮动)字段。我想在X轴上显示连接时间的XY图,在y轴上显示充电时间。我在谷歌上搜索并发现了很多android中的图表api或jar,但在实现了一些类似kiChart的api或jar后,我有点困惑,这违背了我的要求,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++) 
        {              
公共类BatteryGraph扩展活动
{
/**在首次创建活动时调用*/
私有XYmultiplesseriesdataset mDataset;
私有XYMultiplesriesRenderer-mRenderer;
列表值=新的ArrayList();
private GraphicalView mChartView;
私人时间序列时间序列;
//图表容器
私人线路布局;
@抑制警告(“弃用”)
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.graph);
布局=(线性布局)findViewById(R.id.chart);
//创建数据集和渲染器
mDataset=new xymultiplesseriesdataset();
mrender=新的XYMultipleSeriesRender();
mrender.setAxisTitleTextSize(16);
mRenderer.setChartTitleTextSize(20);
mrender.setLabelsTextSize(15);
mrender.setLegendTextSize(15);
mrender.设定点大小(5f);
mRenderer.setMargins(新int[]{0,20,20,0});
XYSeriesRenderer=新的XYSeriesRenderer();
r、 setColor(颜色为黄色);
r、 设置点样式(PointStyle.POINT);
r、 设定值(真);
mrender.addseriesrender(r);
mrender.setClickEnabled(真);
mrender.setSelectableBuffer(20);
mrender.setPanEnabled(true);
mRenderer.setFitLegend(真);
mrender.setDisplayChartValues(true);
setInScroll先生(真);
mrender.setShowGrid(真);
mrender.设置方向(方向.水平);
mrender.setShowLabels(真);
mrender.setXLabelsAngle(60);
mrender.setXTitle(“日期”);
mRenderer.Setytile(“以秒为单位的时间”);
时间序列=新的时间序列(“充电日期vs TimeTakenToCharge”);
mDataset.addSeries(时间序列);
fillData();
mChartView=ChartFactory.getTimeChartView(这个,mDataset,mrender,“dd/mm/yy”);
布局。添加视图(mChartView);
}
私有void fillData()
{
DatabaseAppBlock dbHelper=新的DatabaseAppBlock(getApplicationContext());
游标chargeCycleData=dbHelper.getAllChargeCycleData(“Asc”);
int rowCount=chargeCycleData.getCount();
如果(行计数>0)
{
chargeCycleData.moveToFirst();
对于(int i=0;i
time_series.add(CommonFunc.GetDateFromString(chargeCycleData.getString(chargeCycleData.getColumnIndex(Constants.colChargeConnectTime))),chargeCycleData.getDouble(chargeCycleData.getColumnIndex(Constants.colTimeToCharge));
充电循环数据移动位置(i+1);
} }
}
}易于使用,并提供了一个时间图表类。这是一个XY图表,其时间/日期轴处理日期显示本身。AChartEngine演示还提供了时间图表的示例代码。

您的搜索还不够。。因为有更多有用的库可用。我成功地显示了时间图表。谢谢你的建议。顺便说一句,我仍然不能允许左右滚动图表。正因为如此,我的数据库数据(日期)和它们的计时很少走出屏幕。到目前为止,我只能显示3个数据点,但通过滚动或其他选项,我也可以显示更多的数据点。实现这一点的技术是什么?您可以通过为XYMultipleSeriesRenderer设置setPanEnabled(true,false)来启用水平滚动。第一个参数用于水平滚动,第二个参数用于垂直滚动。