gpt4 book ai didi

java - 使用 aChart Engine 使条形图的条形可点击

转载 作者:行者123 更新时间:2023-12-01 12:45:35 25 4
gpt4 key购买 nike

使用此代码通过图表引擎显示条形图。现在我想将单击或触摸事件添加到图表的单个条形中。但没有 Onclick 或 Ontouch 事件。如何为栏设置 Click 监听器?

public class BarGraph {

public Intent getIntent(Context context) {

int y[] = { 25, 10, 15, 20 };

CategorySeries series = new CategorySeries("Bar1");
for (int i = 0; i < y.length; i++) {
series.add("Bar" + (i + 1), y[i]);
}

XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset(); // collection
// of
// series
// under
// one
// object.,there
// could
// any
dataSet.addSeries(series.toXYSeries()); // number of series

// customization of the chart

XYSeriesRenderer renderer = new XYSeriesRenderer(); // one renderer for
// one series
renderer.setColor(Color.RED);
renderer.setDisplayChartValues(true);
renderer.setChartValuesSpacing((float) 5.5d);
renderer.setLineWidth((float) 10.5d);

XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // collection
// multiple
// values
// for
// one
// renderer
// or
// series
mRenderer.addSeriesRenderer(renderer);
mRenderer.setChartTitle("Demo Graph");
// mRenderer.setXTitle("xValues");
mRenderer.setYTitle("Rupee");
mRenderer.setZoomButtonsVisible(true);
mRenderer.setShowLegend(true);
mRenderer.setShowGridX(true); // this will show the grid in graph
mRenderer.setShowGridY(true);
// mRenderer.setAntialiasing(true);
mRenderer.setBarSpacing(.5); // adding spacing between the line or
// stacks
mRenderer.setApplyBackgroundColor(true);
mRenderer.setBackgroundColor(Color.BLACK);
mRenderer.setXAxisMin(0);
// mRenderer.setYAxisMin(.5);
mRenderer.setXAxisMax(5);
mRenderer.setYAxisMax(50);
//
mRenderer.setXLabels(0);
mRenderer.addXTextLabel(1, "Income");
mRenderer.addXTextLabel(2, "Saving");
mRenderer.addXTextLabel(3, "Expenditure");
mRenderer.addXTextLabel(4, "NetIncome");
mRenderer.setPanEnabled(true, true);
mRenderer.setClickEnabled(true);

// mRenderer

// will fix the chart position
Intent intent = ChartFactory.getBarChartIntent(context, dat`enter code here`aSet,
mRenderer, Type.DEFAULT);

return intent;
}

}

为了获取 ClickListener,我尝试了以下代码:

ChartFactory.getBarChartView(context, dataSet, mRenderer,Type.DEFAULT).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("============view", "Onclick");

}
});

然后事件不会触发...

最佳答案

刚刚遇到了同样的问题,所以我想我知道你陷入了困境。

您的 onClick 方法中需要这一行,它可以让您控制选定的栏或数据点(取决于图表的类型):

SeriesSelection seriesSelection = chartView.getCurrentSeriesAndPoint();

其中,chartView 是您的 GraphicalView 元素。

现在您已从图表中选择了元素,并且您有机会根据您的需要使用它。

好的做法是检查它是否为空,这意味着您单击了图表上的空白区域。例如:

if (seriesSelection == null) {
// do something or not
} else {
// do something cool
}

您可以使用以下方法访问单击字段的数据:

seriesSelection.getSeriesIndex() // in case you have more than one series
seriesSelection.getPointIndex() // gets place in a series
seriesSelection.getValue() // gets value for Y axis
seriesSelection.getXValue() // gets value of X axis

希望这有帮助!

关于java - 使用 aChart Engine 使条形图的条形可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24731961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com