我正在使用 aChartEngine 的 Android 0.7.0 图表库。任何人都可以帮助我如何从左到右到右绘制折线图并最终移出 View 以及如何将图 TableView 向左滚动吗?
我的代码是......
public class MainActivity extends Activity {
private GraphicalView view;
private static Thread thread;
private TimeSeries dataSet = new TimeSeries("Heart Beat Rate");
private XYSeriesRenderer renderer = new XYSeriesRenderer();
private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout layout_eeg1 = (LinearLayout) findViewById(R.id.chart1);
view = getView(this);
layout_eeg1.addView(view,new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
thread = new Thread() {
public void run() {
for (int i = 0; i < 200; i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
Point p = getDataFromReciver(i);
addNewPoint(p);
view.repaint();
}
}
};
thread.start();
}
private static Point getDataFromReciver(int x) {
return new Point(x, randomData());
}
private static int randomData() {
Random random = new Random();
return random.nextInt(180);
}
private int x;
private int y;
public void Point( int x, int y) {
this.x = x;
this.y = y;
}
private int getX() {
return x;
}
private int getY() {
return y;
}
public MainActivity() {
mDataset.removeSeries(dataSet);
mDataset.addSeries(dataSet);
renderer.setColor(Color.GREEN);
renderer.setLineWidth(2);
double xmax = mRenderer.getXAxisMax();
mRenderer.setXAxisMin(xmax - 5);
//renderer.setPointStyle(PointStyle.SQUARE);
//renderer.setFillPoints(true);
mRenderer.setShowAxes(false);
mRenderer.setShowGridX(false); // X grid helps identify values
mRenderer.setShowLabels(false); // See the values
mRenderer.setXTitle("Milisecond #");
mRenderer.setYTitle("HeartBeat");
mRenderer.removeSeriesRenderer(renderer);
mRenderer.addSeriesRenderer(renderer);
}
private GraphicalView getView(Context context) {
view = ChartFactory.getLineChartView(context, mDataset, mRenderer);
return view;
}
private void addNewPoint(Point p) {
dataSet.add(p.x, p.y);
}
}
最佳答案
如果您的图表不使用时间值,那么它应该是简单的。如您所知,achartengine 会自动尝试将所有点放入一张图表中,以便始终显示右侧。因为您想要控制左侧显示的内容,所以您可以获得最大 x 值,无论它是什么,然后将最小值设置为小于您想要显示的间隔。这里mrenderer是XYMultipleSeriesRenderer
顺便说一句,achartengine 已经将其库升级到 1.0.0
改用这个线程:
thread = new Thread() {
public void run() {
for (int i = 0; i < 200; i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
Point p = getDataFromReciver(i);
addNewPoint(p);
if (i > 5) {
mRenderer.setXAxisMin(i - 5);
}
view.repaint();
}
}
};
thread.start();
关于Android aChartEngine 可移动折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13678071/