安卓图表引擎AChartEngine - 源码示例嵌入Acitivity中的折线图.doc_第1页
安卓图表引擎AChartEngine - 源码示例嵌入Acitivity中的折线图.doc_第2页
安卓图表引擎AChartEngine - 源码示例嵌入Acitivity中的折线图.doc_第3页
安卓图表引擎AChartEngine - 源码示例嵌入Acitivity中的折线图.doc_第4页
安卓图表引擎AChartEngine - 源码示例嵌入Acitivity中的折线图.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安卓图表引擎AChartEngine安卓图表引擎AChartEngine(四) - 源码示例 嵌入Acitivity中的折线图 前面几篇博客中都是调用ChartFactory.get*Intent()方法,本节讲的内容调用ChartFactory.get*View()方法,这个方法调用的结果可以嵌入到任何一个Activity中,作为Activity的一部分。XYChartBuilder.java(源码分析见注释)java view plaincopy1. packageorg.achartengine.chartdemo.demo.chart;2. 3. importjava.io.File;4. importjava.io.FileOutputStream;5. 6. importorg.achartengine.ChartFactory;7. importorg.achartengine.GraphicalView;8. importorg.achartengine.chart.PointStyle;9. importorg.achartengine.chartdemo.demo.R;10. importorg.achartengine.model.SeriesSelection;11. importorg.achartengine.model.XYMultipleSeriesDataset;12. importorg.achartengine.model.XYSeries;13. importorg.achartengine.renderer.XYMultipleSeriesRenderer;14. importorg.achartengine.renderer.XYSeriesRenderer;15. importorg.achartengine.tools.PanListener;16. importorg.achartengine.tools.ZoomEvent;17. importorg.achartengine.tools.ZoomListener;18. 19. importandroid.app.Activity;20. importandroid.graphics.Bitmap;21. importandroid.graphics.Bitmap.CompressFormat;22. importandroid.graphics.Color;23. importandroid.os.Bundle;24. importandroid.os.Environment;25. importandroid.view.View;26. importandroid.view.ViewGroup.LayoutParams;27. importandroid.widget.Button;28. importandroid.widget.EditText;29. importandroid.widget.LinearLayout;30. importandroid.widget.Toast;31. 32. publicclassXYChartBuilderextendsActivity33. publicstaticfinalStringTYPE=type;34. 35. privateXYMultipleSeriesDatasetmDataset=newXYMultipleSeriesDataset();36. 37. privateXYMultipleSeriesRenderermRenderer=newXYMultipleSeriesRenderer();38. 39. privateXYSeriesmCurrentSeries;40. 41. privateXYSeriesRenderermCurrentRenderer;42. 43. privateStringmDateFormat;44. 45. privateButtonmNewSeries;46. 47. privateButtonmAdd;48. 49. privateEditTextmX;50. 51. privateEditTextmY;52. 53. privateGraphicalViewmChartView;54. 55. privateintindex=0;56. 57. Override58. protectedvoidonRestoreInstanceState(BundlesavedState)59. super.onRestoreInstanceState(savedState);60. mDataset=(XYMultipleSeriesDataset)savedState.getSerializable(dataset);61. mRenderer=(XYMultipleSeriesRenderer)savedState.getSerializable(renderer);62. mCurrentSeries=(XYSeries)savedState.getSerializable(current_series);63. mCurrentRenderer=(XYSeriesRenderer)savedState.getSerializable(current_renderer);64. mDateFormat=savedState.getString(date_format);65. 66. 67. Override68. protectedvoidonSaveInstanceState(BundleoutState)69. super.onSaveInstanceState(outState);70. outState.putSerializable(dataset,mDataset);71. outState.putSerializable(renderer,mRenderer);72. outState.putSerializable(current_series,mCurrentSeries);73. outState.putSerializable(current_renderer,mCurrentRenderer);74. outState.putString(date_format,mDateFormat);75. 76. 77. Override78. protectedvoidonCreate(BundlesavedInstanceState)79. super.onCreate(savedInstanceState);80. setContentView(R.layout.xy_chart);81. mX=(EditText)findViewById(R.id.xValue);82. mY=(EditText)findViewById(R.id.yValue);83. mRenderer.setApplyBackgroundColor(true);/设置是否显示背景色84. mRenderer.setBackgroundColor(Color.argb(100,50,50,50);/设置背景色85. mRenderer.setAxisTitleTextSize(16);/设置轴标题文字的大小86. mRenderer.setChartTitleTextSize(20);/?设置整个图表标题文字大小87. mRenderer.setLabelsTextSize(15);/设置刻度显示文字的大小(XY轴都会被设置)88. mRenderer.setLegendTextSize(15);/图例文字大小89. mRenderer.setMargins(newint30,70,0,10);/设置图表的外边框(上/左/下/右)90. mRenderer.setZoomButtonsVisible(true);/是否显示放大缩小按钮91. mRenderer.setPointSize(10);/设置点的大小(图上显示的点的大小和图例中点的大小都会被设置)92. mAdd=(Button)findViewById(R.id.add);93. mNewSeries=(Button)findViewById(R.id.new_series);94. mNewSeries.setOnClickListener(newView.OnClickListener()95. publicvoidonClick(Viewv)96. StringseriesTitle=Series+(mDataset.getSeriesCount()+1);/图例97. XYSeriesseries=newXYSeries(seriesTitle);/定义XYSeries98. mDataset.addSeries(series);/在XYMultipleSeriesDataset中添加XYSeries99. mCurrentSeries=series;/设置当前需要操作的XYSeries100. XYSeriesRendererrenderer=newXYSeriesRenderer();/定义XYSeriesRenderer101. mRenderer.addSeriesRenderer(renderer);/将单个XYSeriesRenderer增加到XYMultipleSeriesRenderer102. renderer.setPointStyle(PointStyle.CIRCLE);/点的类型是圆形103. renderer.setFillPoints(true);/设置点是否实心104. mCurrentRenderer=renderer;105. setSeriesEnabled(true);106. 107. );108. 109. /增加一个点后重画图110. mAdd.setOnClickListener(newView.OnClickListener()111. publicvoidonClick(Viewv)112. doublex=0;113. doubley=0;114. try115. x=Double.parseDouble(mX.getText().toString();116. catch(NumberFormatExceptione)117. /TODO118. mX.requestFocus();119. return;120. 121. try122. y=Double.parseDouble(mY.getText().toString();123. catch(NumberFormatExceptione)124. /TODO125. mY.requestFocus();126. return;127. 128. mCurrentSeries.add(x,y);129. mX.setText();130. mY.setText();131. mX.requestFocus();132. if(mChartView!=null)133. mChartView.repaint();/重画图表134. 135. /生成图片保存,注释掉下面的代码不影响图表的生成.136. /-start137. Bitmapbitmap=mChartView.toBitmap();138. try139. Filefile=newFile(Environment.getExternalStorageDirectory(),test+index+.png);140. FileOutputStreamoutput=newFileOutputStream(file);141. press(CompressFormat.PNG,100,output);142. catch(Exceptione)143. e.printStackTrace();144. 145. /-end146. 147. );148. 149. 150. Override151. protectedvoidonResume()152. super.onResume();153. if(mChartView=null)154. LinearLayoutlayout=(LinearLayout)findViewById(R.id.chart);155. mChartView=ChartFactory.getLineChartView(this,mDataset,mRenderer);156. mRenderer.setClickEnabled(true);/设置图表是否允许点击157. mRenderer.setSelectableBuffer(100);/设置点的缓冲半径值(在某点附件点击时,多大范围内都算点击这个点)158. mChartView.setOnClickListener(newView.OnClickListener()159. Override160. publicvoidonClick(Viewv)161. /这段代码处理点击一个点后,获得所点击的点在哪个序列中以及点的坐标.162. /-start163. SeriesSelectionseriesSelection=mChartView.getCurrentSeriesAndPoint();164. doublexy=mChartView.toRealPoint(0);165. if(seriesSelection=null)166. Toast.makeText(XYChartBuilder.this,Nochartelementwasclicked,Toast.LENGTH_SHORT)167. .show();168. else169. Toast.makeText(170. XYChartBuilder.this,171. Chartelementinseriesindex+seriesSelection.getSeriesIndex()172. +datapointindex+seriesSelection.getPointIndex()+wasclicked173. +closestpointvalueX=+seriesSelection.getXValue()+,Y=+seriesSelection.getValue()174. +clickedpointvalueX=+(float)xy0+,Y=+(float)xy1,Toast.LENGTH_SHORT).show();175. 176. /-end177. 178. );179. mChartView.setOnLongClickListener(newView.OnLongClickListener()180. Override181. publicbooleanonLongClick(Viewv)182. SeriesSelectionseriesSelection=mChartView.getCurrentSeriesAndPoint();183. if(seriesSelection=null)184. Toast.makeText(XYChartBuilder.this,Nochartelementwaslongpressed,185. Toast.LENGTH_SHORT);186. returnfalse;/nochartelementwaslongpressed,soletsomething187. /elsehandletheevent188. else189. Toast.makeText(XYChartBuilder.this,Chartelementinseriesindex190. +seriesSelection.getSeriesIndex()+datapointindex191. +seriesSelection.getPointIndex()+waslongpressed,Toast.LENGTH_SHORT);192. returntrue;/theelementwaslongpressed-theeventhasbeen193. /handled194. 195. 196. );197. /这段代码处理放大缩小198. /-start199. mChartView.addZoomListener(newZoomListener()200. publicvoidzoomApplied(ZoomEvente)201. Stringtype=out;202. if(e.isZoomIn()203. type=in;204. 205. Syste

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论