如何把AChartEngine加载到view视图?

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()方法中部署图表的属性,最后通过
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;
	 }
}


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值