AChartEngine框架(版本1.1)的demo中,点击每个demo项,都会跳转到一个新的Activity并显示一种图表。然而总不能想用图表的时候都要跳转到一个新的activity吧,如果想把所需要的图表加载到一个view组件里该怎办呢?其实AChartEngine提供了相应的方法,只不过demo中没有展示。下面就来分享如何把图表加载到view里。
首先看demo中,ChartDemo.java文件。在方法onListItemClick中
intent = mCharts[position - 2].execute(this);
我们跟进execute(this),是IDemoChart接口中的一个方法,返回类型要求是Intent类型。
所以我们看,每个demo的具体类中,都在excute()方法中部署图表的属性,最后通过
那么,我们如果能返还一个View类型,再把这个View加载到相应的view视图中,是不是就可以实现把图表加载到view里这个功能呢?
于是查看API,发现了一个类GraphicalView,该类继承了android.view.View。再看ChartFactory类中,有很多返还各种图表类型的方法。注意,每个方法都对应两种:getXxxIntent和getXxxView。
这下就明了了。ChartFactory就好比一个图表装配工厂,设置完属性后,想要什么要类型的图表就调用对应的方法,每个方法返回类型分类view和intent。
到此,我们就应该就知道怎么加载到view里了。
拿折线图举例。
在想要加载view的代码中
GraphicalView view =MyChart.getChartView(this)
最后addView(sleepView)就实现了将图标加载到view中的功能了。
另外将将achartengine view加入到ScrollView中时注意:
(该条参考资料http://blog.csdn.net/beijingshi1/article/details/9309099)
1.在achartengine的renderer加入一行代码:
renderer.setInScroll(true);
2.ScrollView的布局加入以下设置:
android:fillViewport="true"
3.ScrollView的height要设成fill_parent
最后附上部分代码:
首先看demo中,ChartDemo.java文件。在方法onListItemClick中
intent = mCharts[position - 2].execute(this);
我们跟进execute(this),是IDemoChart接口中的一个方法,返回类型要求是Intent类型。
所以我们看,每个demo的具体类中,都在excute()方法中部署图表的属性,最后通过
Intent intent = ChartFactory.getLineChartIntent(context, dataset, renderer, "Average temperature");
return intent;
返回一个intent。那么,我们如果能返还一个View类型,再把这个View加载到相应的view视图中,是不是就可以实现把图表加载到view里这个功能呢?
于是查看API,发现了一个类GraphicalView,该类继承了android.view.View。再看ChartFactory类中,有很多返还各种图表类型的方法。注意,每个方法都对应两种:getXxxIntent和getXxxView。
这下就明了了。ChartFactory就好比一个图表装配工厂,设置完属性后,想要什么要类型的图表就调用对应的方法,每个方法返回类型分类view和intent。
到此,我们就应该就知道怎么加载到view里了。
拿折线图举例。
定义一个MyChart类,继承AbstractDemoChart。新写一个方法public GraphicalView getChartView(Context context){},在其中跟之前一样设置各种属性,最后GraphicalView view = ChartFactory.getLineChartView(context, dataset, renderer);
return view;在想要加载view的代码中
GraphicalView view =MyChart.getChartView(this)
最后addView(sleepView)就实现了将图标加载到view中的功能了。
另外将将achartengine view加入到ScrollView中时注意:
(该条参考资料http://blog.csdn.net/beijingshi1/article/details/9309099)
1.在achartengine的renderer加入一行代码:
renderer.setInScroll(true);
2.ScrollView的布局加入以下设置:
android:fillViewport="true"
3.ScrollView的height要设成fill_parent
最后附上部分代码:
public class MyChart extends AbstractDemoChart {
@Override
public String getName() {
return null;
}
@Override
public String getDesc() {
return null;
}
@Override
public Intent execute(Context context) {
return null;
}
public GraphicalView executeView(Context context) {
/*
设置属性,具体代码略
*/
GraphicalView view = ChartFactory.getLineChartView(context, dataset, renderer);
return view;
}
}