AChartEngineAndroid的一个开源图表库.docx
- 文档编号:9737312
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:8
- 大小:16.83KB
AChartEngineAndroid的一个开源图表库.docx
《AChartEngineAndroid的一个开源图表库.docx》由会员分享,可在线阅读,更多相关《AChartEngineAndroid的一个开源图表库.docx(8页珍藏版)》请在冰豆网上搜索。
AChartEngineAndroid的一个开源图表库
AChartEngine(Android的一个开源图表库)
最近在做一个关于股票的软件(forAndroid),在软件中需要实现一个股票走势图的功能,本来想到用最基础的画板和画笔去实现来着,在设计的过程中发现好复杂,需要抽象出很多东西,而且代码量也不小(相对之后提到的来说),我是一个真真正正的懒人,实在不乐意动手写那么多东西,而且还会有很多不可预见性的风险,于是上网查了一些资料,跟朋友咨询了一下,发现了它(AChartEngine):
AChartEngineisachartinglibraryforAndroidapplications.Itcurrentlysupportsthefollowingcharttypes:
linechart
areachart
scatterchart
timechart
barchart
piechart
bubblechart
doughnutchart
range(high-low)barchart
dialchart/gauge
怎么样?
是不是一个很强大呢?
当然是针对Android来说的,如果对PC和Web来说这都是皮毛…^_^
我先吃饭…一会接着写!
呵呵!
这么晚了?
忘了还有文章没写完…先上图吧,这是我参考官方文档写的一个Demo,等有有时间在把代码和我找到的相关函数贴上来吧……
虽然很丑,但这是我的辛辛苦苦的劳动成果呢…呵呵,没想到我现在看英文文档都能写代码了,哈!
有进步哦
第二天……
开始贴代码:
首先引入jar包,就不j细说了……
---------------------------StockChartBuilder.java------------------------------------
/**
*ClassName:
</br>
*<p>
*功能描述:
股票走势图
*</p>
*History</br>
*CreateUser:
LuPing</br>
*CreateDate:
2011-5-15下午07:
10:
54</br>
*UpdateUser:
</br>
*UpdateDate:
</br>
*/
publicclassStockChartBuilderextendsActivity{
publicstaticfinalStringTYPE="type";privateXYMultipleSeriesDatasetmDataset=newXYMultipleSeriesDataset();privateXYMultipleSeriesRenderermRenderer=newXYMultipleSeriesRenderer();privateXYSeriesmCurrentSeries;privateXYSeriesRenderermCurrentRenderer;privateStringmDateFormat;privateGraphicalViewmChartView;/**
*提取保存数据恢复Activity状态
*/
@Override
protectedvoidonRestoreInstanceState(BundlesavedState){
super.onRestoreInstanceState(savedState);
mDataset=(XYMultipleSeriesDataset)savedState
.getSerializable("dataset");
mRenderer=(XYMultipleSeriesRenderer)savedState
.getSerializable("renderer");
mCurrentSeries=(XYSeries)savedState
.getSerializable("current_series");
mCurrentRenderer=(XYSeriesRenderer)savedState
.getSerializable("current_renderer");
mDateFormat=savedState.getString("date_format");
}/**
*在Activity销毁前保存数据状态
*/
@Override
protectedvoidonSaveInstanceState(BundleoutState){
super.onSaveInstanceState(outState);
outState.putSerializable("dataset",mDataset);
outState.putSerializable("renderer",mRenderer);
outState.putSerializable("current_series",mCurrentSeries);
outState.putSerializable("current_renderer",mCurrentRenderer);
outState.putString("date_format",mDateFormat);
}@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.xy_chart);//创建系列(画笔、渲染)
StringseriesTitle="上证指数";
XYSeriesseries=newXYSeries(seriesTitle);
mDataset.addSeries(series);
mCurrentSeries=series;
XYSeriesRendererseriesRenderer=newXYSeriesRenderer();//设置seriesRenderer风格
seriesRenderer.setColor(Color.BLUE);//画笔颜色
seriesRenderer.setFillBelowLine(true);//确定填充
seriesRenderer.setFillBelowLineColor(Color.RED);//填充颜色
//seriesRenderer.setFillPoints(true);//不知道干什么用的
seriesRenderer.setPointStyle(PointStyle.POINT);//设置画笔风格
seriesRenderer.setLineWidth(3.0f);//设置画笔宽度mRenderer.addSeriesRenderer(seriesRenderer);
mRenderer.setYAxisMin(0d);//设置Y维度最小值
mRenderer.setYAxisMax(120d);//设置Y维度最大值
mRenderer.setXAxisMax(24d);//设置X维度最大值
mRenderer.setShowGrid(true);//设置背景格子
mRenderer.setXLabels(24);//设置X坐标分成24份
mRenderer.setChartTitle("上证指数-24小时走势图");
mCurrentRenderer=seriesRenderer;//数据绘制ToDo
doublex=0;
doubley=0;
//获取(x,y)数据集
int[][]xyValues=getValues();for(inti=0;i<xyValues.length;i++){
x=xyValues[i][0];
y=xyValues[i][1];
mCurrentSeries.add(x,y);
}}/**
*在onResume里进行绘制在横屏切换时自动调用
*/
@Override
protectedvoidonResume(){
super.onResume();
if(mChartView==null){
LinearLayoutlayout=(LinearLayout)findViewById(R.id.chart);
mChartView=ChartFactory.getLineChartView(this,mDataset,
mRenderer);
layout.addView(mChartView,newLayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));}else{
mChartView.setBackgroundResource(R.id.chart);
mChartView.repaint();
}
}/**
*数据入口
*
*@returnx、y坐标集
*/
privateint[][]getValues(){
int[][]xyValues={{0,88},{1,79},{2,75},{3,71},
{4,90},{5,88},{6,66},{7,65},{8,50},
{9,78},{10,67},{11,77},{12,79},{13,85},
{14,89},{15,93},{16,95},{17,99},{18,66},
{19,55},{20,44}};
returnxyValues;
}/*
*(non-Javadoc)
*
*@seeandroid.app.Activity#onTouchEvent(android.view.MotionEvent)
*/
@Override
publicbooleanonTouchEvent(MotionEventevent){returnsuper.onTouchEvent(event);
}
}
------------------------------xy_chart.xml(Layout)-----------------------------------
<?
xmlversion="1.0"encoding="utf-8"?
><LinearLayoutxmlns:
android="
android:
orientation="vertical"android:
layout_width="fill_parent"
android:
layout_height="fill_parent"><TextViewandroid:
layout_width="wrap_content"android:
layout_height="wrap_content"
android:
text="@string/add_values"/><TableLayoutandroid:
orientation="vertical"
android:
layout_width="fill_parent"
android:
layout_height="wrap_content"></TableLayout><LinearLayoutandroid:
id="@+id/chart"android:
orientation="horizontal"
android:
layout_width="fill_parent"android:
layout_height="wrap_content"android:
layout_weight="1"/><LinearLayoutandroid:
orientation="horizontal"
android:
layout_width="fill_parent"android:
layout_height="wrap_content">
</LinearLayout></LinearLayout>
--------------------------------AndroidManifest.xml-------------------------------------
<?
xmlversion="1.0"encoding="utf-8"?
>
<manifestxmlns:
android="
package=".eagle"
android:
versionCode="1"
android:
versionName="1.0"><applicationandroid:
icon="@drawable/icon"android:
label="@string/app_name">
<activityandroid:
name=".StockChartBuilder"
android:
label="@string/app_name">
<intent-filter>
<actionandroid:
name="android.intent.action.MAIN"/>
<categoryandroid:
name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity><activityandroid:
name="org.achartengine.GraphicalActivity"/>
</application>
</manifest>
----------------------------------strings.xml(values)----------------------------------------<?
xmlversion="1.0"encoding="utf-8"?
>
<resources>
<stringname="hello">HelloWorld,ChartTest!
</string>
<stringname="app_name">走势图(示例)</string>
<stringname="add_values">输入值生成走势图</string>
<stringname="x">X</string>
<stringname="y">Y</string>
<stringname="add">Add</string>
<stringname="new_series">Newseries</string>
</resources>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AChartEngineAndroid 一个 图表