好吧,找了很多android的有关chart点击的资料,表示很纠结。。曾经想到自己写chart但是又太懒了,终于让我看到了,现贴上代码,希望纠结于此的人不再纠结。不想解释,自己测试吧。。achartEngine的Demo和api还有jar,请到官网上载吧
http://code.google.com/p/achartengine/downloads/listjava代码
public class AchartEngineBar extends Activity{
GraphicalView mChartView ;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.chart);
LinearLayout layout = (LinearLayout)findViewById(R.id.chartlayout);
XYMultipleSeriesDataset dataset=new XYMultipleSeriesDataset();
for(int i=0;i<2;i++){
CategorySeries series = new CategorySeries("Demo Series"+i);
for(int k=0;k<10;k++){
series.add(k*(i+4));
}dataset.addSeries(series.toXYSeries());
}
XYMultipleSeriesRenderer render =new XYMultipleSeriesRenderer();
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(Color.WHITE);
render.addSeriesRenderer(r);
r=new SimpleSeriesRenderer();
r.setColor(Color.RED);
render.addSeriesRenderer(r);
render.setChartTitle("bar chart demo");
render.setXTitle("x轴");
render.setYTitle("y轴");
render.setXAxisMin(0.5);
render.setXAxisMax(10.5);
render.setYAxisMin(0);
render.setYAxisMax(210);
render.setBarSpacing(1);
mChartView = ChartFactory.getBarChartView(this, dataset, render, Type.DEFAULT);
render.setClickEnabled(true);
layout.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
/// render.setSelectableBuffer(100);
mChartView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
double[] xy = mChartView.toRealPoint(0);
if (seriesSelection == null) {
Toast.makeText(AchartEngineBar.this, "No chart element was clicked", Toast.LENGTH_SHORT)
.show();
} else {
Toast.makeText(
AchartEngineBar.this,
"Chart element in series index " + seriesSelection.getSeriesIndex()
+ " data point index " + seriesSelection.getPointIndex() + " was clicked"
+ " closest point value X=" + seriesSelection.getXValue() + ", Y=" + seriesSelection.getValue()
+ " clicked point value X=" + (float) xy[0] + ", Y=" + (float) xy[1], Toast.LENGTH_SHORT).show();
}
}
});
}
}至于xml随便写个就好了。。
http://code.google.com/p/achartengine/downloads/listjava代码
public class AchartEngineBar extends Activity{
GraphicalView mChartView ;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.chart);
LinearLayout layout = (LinearLayout)findViewById(R.id.chartlayout);
XYMultipleSeriesDataset dataset=new XYMultipleSeriesDataset();
for(int i=0;i<2;i++){
CategorySeries series = new CategorySeries("Demo Series"+i);
for(int k=0;k<10;k++){
series.add(k*(i+4));
}dataset.addSeries(series.toXYSeries());
}
XYMultipleSeriesRenderer render =new XYMultipleSeriesRenderer();
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(Color.WHITE);
render.addSeriesRenderer(r);
r=new SimpleSeriesRenderer();
r.setColor(Color.RED);
render.addSeriesRenderer(r);
render.setChartTitle("bar chart demo");
render.setXTitle("x轴");
render.setYTitle("y轴");
render.setXAxisMin(0.5);
render.setXAxisMax(10.5);
render.setYAxisMin(0);
render.setYAxisMax(210);
render.setBarSpacing(1);
mChartView = ChartFactory.getBarChartView(this, dataset, render, Type.DEFAULT);
render.setClickEnabled(true);
layout.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
/// render.setSelectableBuffer(100);
mChartView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
double[] xy = mChartView.toRealPoint(0);
if (seriesSelection == null) {
Toast.makeText(AchartEngineBar.this, "No chart element was clicked", Toast.LENGTH_SHORT)
.show();
} else {
Toast.makeText(
AchartEngineBar.this,
"Chart element in series index " + seriesSelection.getSeriesIndex()
+ " data point index " + seriesSelection.getPointIndex() + " was clicked"
+ " closest point value X=" + seriesSelection.getXValue() + ", Y=" + seriesSelection.getValue()
+ " clicked point value X=" + (float) xy[0] + ", Y=" + (float) xy[1], Toast.LENGTH_SHORT).show();
}
}
});
}
}至于xml随便写个就好了。。
有点不明白的,为什么我的这一步
double[] xy = mChartView.toRealPoint(0);
得到的是-Infinity?