我需要在我的Android应用程序中绘制3个图表。每个图形都在viewPager布局内的一个片段内,并且当app处于焦点时,每个片段将保留在内存中。 此外,当用户点击图形点时,应出现具有该点信息的弹出窗口。 我找到了afreechart和achartengine图书馆,但是哪个更适合我的目的? 主要的是轻量级内存请求
答案 0 :(得分:1)
还有另一个轻量级图表库,它有很多改进和简单的选项。该库的名称是GraphView
库。
它提供了静态和动态绘制图形的功能。还有许多其他功能,如捏缩放等。
使用GraphView库:
Google for the GraphView.jar and place it inside your /libs folder under your applications directory.
下面是绘制随机曲线(正弦波)的示例代码:
GraphViewSeries rndSeries=new GraphViewSeries("random curve",null,data);
Log.d(TAG, "Series created");
GraphView graphView=new LineGraphView(getApplicationContext(), "Amplitude-Time Graph X-axis:Time(ms) Y-axis: Amplitude");
Log.d(TAG, "Line GraphView created");
graphView.addSeries(rndSeries);
Log.d(TAG, "series added");
graphView.setVerticalScrollBarEnabled(true);
//long xmax=preferences1.getLong("Maxx", 0);
graphView.setViewPort(0, 100);
Log.d(TAG, "port setup");
graphView.setScalable(true);
graphView.setScrollable(true);
graphView.computeScroll();
graphView.setHorizontalScrollBarEnabled(true);
graphView.setBackgroundColor(Color.BLACK);
graphView.setVerticalLabels(new String[] {" "," ","Amp"});
graphView.setHorizontalLabels(new String[] {" ","Time (ms)"});
graphView.setManualYAxisBounds(300.0d, -30.0d);
graphView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
graphView.setVisibility(View.VISIBLE);
Log.d(TAG, "Obtaining reference to layout");
//setContentView(R.layout.graphview);
LinearLayout layout=(LinearLayout) findViewById(R.id.gviewlayoutt);
Log.d(TAG, "reference obtd");
layout.addView(graphView);
Log.d(TAG, "graph view added to layout");
对于使用其他类型的图表线条,饼图等,请参阅以下链接:
http://www.jjoe64.com/p/graphview-library.html
我使用此库的原因是它比AChartEngine
快得多,还有许多其他功能。记忆力也非常好。
希望这有所帮助。