Android 在触摸时向散点图添加点,但仅对第一次触摸事件有效(achartengine)
这是我的听众() addseries功能如下所示:-Android 在触摸时向散点图添加点,但仅对第一次触摸事件有效(achartengine),android,achartengine,touch-event,Android,Achartengine,Touch Event,这是我的听众() addseries功能如下所示:- private void addseries() { XYSeries series = new XYSeries("Series 1"); for(int i=0;i<size;i++) { series.add(value1[i],value2[i]); }
private void addseries()
{
XYSeries series = new XYSeries("Series 1");
for(int i=0;i<size;i++)
{
series.add(value1[i],value2[i]);
}
dataset = new XYMultipleSeriesDataset();
dataset.addSeries(series);
if(flagtouch==1)
{
dataset.addSeries(seriestouch);
}
}
private void drawgraph()
{
mRenderer = new XYMultipleSeriesRenderer();
XYSeriesRenderer renderer = new XYSeriesRenderer();
renderer.setColor(Color.RED);
renderer.setPointStyle(PointStyle.CIRCLE);
renderer.setFillPoints(true);
mRenderer.addSeriesRenderer(renderer);
if(flagtouch==1)
{
XYSeriesRenderer renderer1 = new XYSeriesRenderer();
renderer1.setColor(Color.YELLOW);
renderer1.setPointStyle(PointStyle.CIRCLE);
renderer1.setFillPoints(true);
mRenderer.addSeriesRenderer(renderer1);
}
mRenderer.setXTitle(colnam.get(0));
mRenderer.setYTitle(colnam.get(1));
mRenderer.setShowLegend(false);
mRenderer.setMargins(new int[]{10,45,60,0});
title.setText("Scatter Plot");
mChart = ChartFactory.getScatterChartView(this, dataset, mRenderer);
view.addView(mChart);
}
新的点显示在图表上,但仅针对第一个触摸事件,对于后续触摸事件,根本不调用touchlistener()。我使用日志检查了这一点,并且进一步删除了语句“mChart=ChartFactory.getScatterChartView(this,dataset,mrender);”每当flagtouch=1,则调用touchlistener()每次触摸时都会调用,但它没有任何用处,因为图形中没有任何变化。试试这个
mChart.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
double[] xy = mChart.toRealPoint(0);
series.add(xy[0], xy[1]);
dataset.clear();
dataset.addSeries(series);
mChart.repaint();
}
return false;
}
});
什么是value1[i],value2[i]?
mChart.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
double[] xy = mChart.toRealPoint(0);
series.add(xy[0], xy[1]);
dataset.clear();
dataset.addSeries(series);
mChart.repaint();
}
return false;
}
});