如何在android中绘制条形图?
我已经使用achartengine创建了一个条形图,但图中绘制的值是静态的。现在,我已经使用sqlite创建了一个数据库,我想使用数据库中的值绘制条形图,并每1分钟刷新一次,以便它绘制新的值(如果有)。我在下面发布我的代码。请指导我如何修改代码,以便我可以做上述工作。我在网上尝试了很多教程,但没有多大帮助如何在android中绘制条形图?,android,database,bar-chart,achartengine,Android,Database,Bar Chart,Achartengine,我已经使用achartengine创建了一个条形图,但图中绘制的值是静态的。现在,我已经使用sqlite创建了一个数据库,我想使用数据库中的值绘制条形图,并每1分钟刷新一次,以便它绘制新的值(如果有)。我在下面发布我的代码。请指导我如何修改代码,以便我可以做上述工作。我在网上尝试了很多教程,但没有多大帮助 package flu.solutions.travelsense; import java.util.ArrayList; import java.util.List; import
package flu.solutions.travelsense;
import java.util.ArrayList;
import java.util.List;
import org.achartengine.ChartFactory;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer.Orientation;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
public class ChartActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = createIntent();
startActivity(intent);
}
public Intent createIntent()
{
String[] titles = new String[] { "Top 10 Destinations", " " };
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] { 8, 6, 7, 6, 7, 7, 9, 5, 7, 8, 8 });
values.add(new double[] {});
int[] colors = new int[] { Color.RED, Color.BLACK};
XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
renderer.setOrientation(Orientation.HORIZONTAL);
setChartSettings(renderer, "Top 10 Destinations", " ", " ", 0,10, 0,10, Color.GRAY, Color.GREEN);
renderer.setXLabels(1);
renderer.setYLabels(10);
renderer.addXTextLabel(1, "Bangalore");
renderer.addXTextLabel(2, "Mysore");
renderer.addXTextLabel(3, "Chennai");
renderer.addXTextLabel(4, "Delhi");
renderer.addXTextLabel(5, "Kolkatta");
renderer.addXTextLabel(6, "Kashmir");
renderer.addXTextLabel(7, "Hyderabad");
renderer.addXTextLabel(8, "Mumbai");
renderer.addXTextLabel(9, "Kerala");
renderer.addXTextLabel(10, "Gujarat");
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer seriesRenderer = renderer.getSeriesRendererAt(i);
seriesRenderer.setDisplayChartValues(false);
}
return ChartFactory.getBarChartIntent(this, buildBarDataset(titles, values), renderer,Type.DEFAULT);
}
protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors)
{
// creates a SeriesRenderer and initializes it with useful default values as well as colors
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(26);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(25);
int length = colors.length;
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(colors[i]);
//r.setChartvalueAngle(-90);
r.setChartValuesSpacing(15);
renderer.addSeriesRenderer(r);
}
return renderer;
}
protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,
String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor,int labelsColor)
{
// sets lots of default values for this renderer
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setXAxisMin(xMin);
renderer.setXAxisMax(xMax);
renderer.setYAxisMin(yMin);
renderer.setYAxisMax(yMax);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.WHITE);
renderer.setBarSpacing(1);
}
protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values)
{
// adds the axis titles and values into the dataset
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for (int i = 0; i < length; i++)
{
CategorySeries series = new CategorySeries(titles[i]);
double[] v = values.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++)
{
series.add(v[k]);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_chart, menu);
return true;
}
}
package flu.solutions.travelsense;
导入java.util.ArrayList;
导入java.util.List;
导入org.achartengine.ChartFactory;
导入org.achartengine.chart.BarChart.Type;
导入org.achartengine.model.CategorySeries;
导入org.achartengine.model.xymultiplesseriesdataset;
导入org.achartengine.renderer.SimpleSeriesRenderer;
导入org.achartengine.renderer.XYMultipleSeriesRenderer;
导入org.achartengine.renderer.xymultipreseriesrenderer.Orientation;
导入android.app.Activity;
导入android.content.Intent;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.view.Menu;
公共类活动扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Intent=createIntent();
星触觉(意向);
}
公共意图createIntent()
{
字符串[]标题=新字符串[]{“前10个目的地”,“”};
列表值=新的ArrayList();
添加(新的双[{8,6,7,6,7,7,9,5,7,8});
add(新的double[]{});
int[]colors=newint[]{Color.RED,Color.BLACK};
XYMultipleReseriesRenderer渲染器=构建渲染器(颜色);
渲染器.setOrientation(方向.水平);
setChartSettings(渲染器,“前10个目标”、“0”、“0,10”、“0,10”、“Color.GRAY”、“Color.GREEN”);
setXLabels(1);
1.setYLabels(10);
addxtlabel(1,“班加罗尔”);
addxtLabel(2,“myStore”);
addxtlabel(3,“钦奈”);
addxtlabel(4,“德里”);
addxtlabel(5,“加尔各答”);
addxtlabel(6,“克什米尔”);
addxtlabel(7,“海得拉巴”);
addxtlabel(8,“孟买”);
addXTextLabel(9,“喀拉拉邦”);
addxtlabel(10,“古吉拉特邦”);
int length=renderer.getSeriesRenderCount();
for(int i=0;i
您可以使用以下工具:achartengine、AndroidPlot或charts4j。如果您希望以编程方式执行此操作,则以下是一个程序:
公共类BarchartsampleActivity扩展活动{
/**在首次创建活动时调用*/
静态xymultiplesseriesdataset数据集;
静态XYMultipleSeriesRenderer渲染器;
静态XYSeriesRenderer渲染器系列;
静态分类系列;
静态图形视图mChartView;
字符串xvalstring1、xvalstring2、xvalstring3、xvalstring4、xvalstring5;
int xvalint1、xvalint2、xvalint3、xvalint4、xvalint5;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout布局=(LinearLayout)findViewById(R.id.LinearLayout);
Intent=getIntent();
xvalstring1=intent.getStringExtra(“xvalstring1”).toString().trim();
xvalstring2=intent.getStringExtra(“xval