achartengine图标框架的使用心得
2016-09-22 00:00
218 查看
public class StatusLineActivity extends Activity implements CompoundButton.OnCheckedChangeListener{ private LinearLayout chart; private GraphicalView chartView; private CheckBox measuredBox,qualityBox,safeBox; private XYSeries measuredSeries,qualitySeries,safeSeries; private XYSeriesRenderer measuredSeriesRenderer,qualitySeriesRenderer,safeSeriesRenderer; private XYMultipleSeriesRenderer seriesRenderer; private XYMultipleSeriesDataset seriesDataset; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_line_chart); initView(); initMeasuredData(); initQualityData(); initSafeData(); initXYMultipleSeriesRenderer(); showChart(); } private void initQualityData() { qualitySeries=new XYSeries("质量"); qualitySeries.add(1, 0.27); qualitySeries.add(2, 0.22); qualitySeries.add(3, 0.20); qualitySeries.add(4, 0.21); qualitySeries.add(5, 0.25); qualitySeries.add(6, 0.22); qualitySeries.add(7, 0.23); qualitySeries.add(8, 0.33); qualitySeries.add(9, 0.14); qualitySeries.add(10, 0.23); qualitySeriesRenderer=new XYSeriesRenderer(); qualitySeriesRenderer.setPointStyle(PointStyle.CIRCLE);//坐标点的显示风格 qualitySeriesRenderer.setPointStrokeWidth(3);//坐标点的大小 qualitySeriesRenderer.setColor(0xFF00C8FF);//表示该组数据的图或线的颜色 qualitySeriesRenderer.setDisplayChartValues(false);//设置是否显示坐标点的y轴坐标值 qualitySeriesRenderer.setChartValuesTextSize(12); } private void initSafeData() { safeSeries=new XYSeries("安全"); safeSeries.add(1, 0.16); safeSeries.add(2, 0.10); safeSeries.add(3, 0.27); safeSeries.add(4, 0.29); safeSeries.add(5, 0.24); safeSeries.add(6, 0.38); safeSeries.add(7, 0.33); safeSeries.add(8, 0.15); safeSeries.add(9, 0.17); safeSeries.add(10, 0.1); safeSeriesRenderer=new XYSeriesRenderer(); safeSeriesRenderer.setPointStyle(PointStyle.DIAMOND);//坐标点的显示风格 safeSeriesRenderer.setPointStrokeWidth(3);//坐标点的大小 safeSeriesRenderer.setColor(0xFF1FD425);//表示该组数据的图或线的颜色 safeSeriesRenderer.setDisplayChartValues(false);//设置是否显示坐标点的y轴坐标值 safeSeriesRenderer.setChartValuesTextSize(12);//设置显示的坐标点值的字体大小 } private void initMeasuredData() { measuredSeries=new XYSeries("实测"); measuredSeries.add(1, 0.36); measuredSeries.add(2, 0.30); measuredSeries.add(3, 0.27); measuredSeries.add(4, 0.29); measuredSeries.add(5, 0.34); measuredSeries.add(6, 0.28); measuredSeries.add(7, 0.33); measuredSeries.add(8, 0.11); measuredSeries.add(9, 0.17); measuredSeries.add(10, 0.08); measuredSeriesRenderer=new XYSeriesRenderer(); measuredSeriesRenderer.setPointStyle(PointStyle.DIAMOND);//坐标点的显示风格 measuredSeriesRenderer.setPointStrokeWidth(3);//坐标点的大小 measuredSeriesRenderer.setColor(0xFFF46C48);//表示该组数据的图或线的颜色 measuredSeriesRenderer.setDisplayChartValues(false);//设置是否显示坐标点的y轴坐标值 measuredSeriesRenderer.setChartValuesTextSize(12);//设置显示的坐标点值的字体大小 } private void initView() { chart = (LinearLayout) findViewById(R.id.chart); measuredBox= (CheckBox) findViewById(R.id.measured_box); measuredBox.setChecked(true); measuredBox.setOnCheckedChangeListener(this); qualityBox= (CheckBox) findViewById(R.id.quality_box); qualityBox.setChecked(true); qualityBox.setOnCheckedChangeListener(this); safeBox= (CheckBox) findViewById(R.id.safe_box); safeBox.setChecked(true); safeBox.setOnCheckedChangeListener(this); } private void showChart() { if(measuredBox.isChecked()){ seriesDataset.addSeries(measuredSeries); seriesRenderer.addSeriesRenderer(measuredSeriesRenderer);} if(qualityBox.isChecked()){ seriesDataset.addSeries(qualitySeries); seriesRenderer.addSeriesRenderer(qualitySeriesRenderer); } if(safeBox.isChecked()){ seriesDataset.addSeries(safeSeries); seriesRenderer.addSeriesRenderer(safeSeriesRenderer); } chartView=ChartFactory.getLineChartView(this,seriesDataset,seriesRenderer); /*chartView.addZoomListener( new ZoomListener() { @Override public void zoomApplied(ZoomEvent e) { double start = seriesRenderer.getXAxisMin(); double stop = (double)seriesRenderer.getXAxisMax(); double step = (double)(stop - start) / 5; seriesRenderer.clearXTextLabels(); for (double i = start; i <= stop; i += step) seriesRenderer.addXTextLabel(i+1, "label"+(int)i); seriesRenderer.setXLabels(0); } @Override public void zoomReset() { } }, true, true); chartView.addPanListener(new PanListener() { @Override public void panApplied() { double start = seriesRenderer.getXAxisMin(); double stop = (double)seriesRenderer.getXAxisMax(); double step = (double)(stop - start) / 5; seriesRenderer.clearXTextLabels(); for (double i = start; i <= stop; i += step) seriesRenderer.addXTextLabel(i+1, "label"+(int)i); seriesRenderer.setXLabels(0); } });*/ chart.addView(chartView); } private void initXYMultipleSeriesRenderer() { /*描绘器,设置图标整体效果,比如x,y轴效果,缩放比例,颜色设置*/ seriesRenderer=new XYMultipleSeriesRenderer(); seriesDataset=new XYMultipleSeriesDataset(); seriesRenderer.setApplyBackgroundColor(true);//是应用设置的背景颜色 seriesRenderer.setBackgroundColor(Color.argb(100, 255, 231, 224));//设置图表的背景颜色 seriesRenderer.setAxisTitleTextSize(16);//设置坐标轴标题字体的大小 seriesRenderer.setChartTitleTextSize(30);//设置图表标题的字体大小 seriesRenderer.setLabelsTextSize(28);//设置标签字体大小 seriesRenderer.setLegendTextSize(28);//设置说明字体大小 //seriesRenderer.setXLabelsAngle(-90); seriesRenderer.setMargins(new int[] { 40, 30,200, 20 });//设置外边距,顺序为:上左下右 seriesRenderer.setYAxisMin(0);//设置y轴的起始值 seriesRenderer.setYAxisMax(0.4);//设置y轴的最大值 seriesRenderer.setXAxisMin(0);//设置x轴起始值 seriesRenderer.setXAxisMax(11);//设置x轴最大值 seriesRenderer.setPanEnabled(true, false); //颜色设置 seriesRenderer.setLabelsColor(0xFF85848D);//设置标签颜色 //缩放设置 seriesRenderer.setZoomButtonsVisible(false);//设置缩放按钮是否可见 seriesRenderer.setZoomEnabled(false); //图表是否可以缩放 seriesRenderer.setZoomInLimitX(7); seriesRenderer.setZoomRate(7);//缩放比例 //图表移动 seriesRenderer.setPanEnabled(false);//图表是否可以移动 seriesRenderer.setPointSize(3);//设置坐标点大小 seriesRenderer.setXTitle(null);//设置x轴标题 seriesRenderer.setYTitle("百分比");//设置y轴标题 seriesRenderer.setMarginsColor(Color.WHITE);//设置外边距空间的颜色 seriesRenderer.setClickEnabled(false); seriesRenderer.setChartTitle("深业上城项目各公司数据变化趋势图"); seriesRenderer.setYLabelsAlign(Align.LEFT); seriesRenderer.setYLabels(0);//显示的x轴标签的个数 seriesRenderer.addYTextLabel(0.1, "10%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(0.2, "20%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(0.3, "30%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(0.4, "40%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(5, "50%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(6, "60%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(7, "70%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(8, "80%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(9, "90%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(10, "100%");//针对特定的x轴值增加文本标签 seriesRenderer.setXLabels(0);//显示的x轴标签的个数 seriesRenderer.setXLabelsPadding(4); seriesRenderer.setXLabelsAngle(45); seriesRenderer.setXLabelsAlign(Align.LEFT); seriesRenderer.addXTextLabel(1, "公司舍业1"); seriesRenderer.addXTextLabel(2, "公司深夜三层2"); seriesRenderer.addXTextLabel(3, "公司3"); seriesRenderer.addXTextLabel(4, "公司4"); seriesRenderer.addXTextLabel(5, "公司5"); seriesRenderer.addXTextLabel(6, "公司6"); seriesRenderer.addXTextLabel(7, "公司7"); seriesRenderer.addXTextLabel(8, "公司8"); seriesRenderer.addXTextLabel(9, "公司9"); seriesRenderer.addXTextLabel(10, "公司10"); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (buttonView.getId()){ case R.id.measured_box: if (isChecked){ seriesRenderer.addSeriesRenderer(measuredSeriesRenderer); seriesDataset.addSeries(measuredSeries); chartView.repaint(); }else { seriesDataset.removeSeries(measuredSeries); seriesRenderer.removeSeriesRenderer(measuredSeriesRenderer); chartView.repaint(); } break; case R.id.quality_box: if (isChecked){ seriesRenderer.addSeriesRenderer(qualitySeriesRenderer); seriesDataset.addSeries(qualitySeries); chartView.repaint(); }else { seriesDataset.removeSeries(qualitySeries); seriesRenderer.removeSeriesRenderer(qualitySeriesRenderer); chartView.repaint();} break; case R.id.safe_box: if (isChecked){ seriesRenderer.addSeriesRenderer(safeSeriesRenderer); seriesDataset.addSeries(safeSeries); chartView.repaint(); }else { seriesDataset.removeSeries(safeSeries); seriesRenderer.removeSeriesRenderer(safeSeriesRenderer); chartView.repaint();} break; } } }
代码中已经有了很详细的解释,这里我就不多说了,自己先做一个demo,然后集成到自己的项目中去,这里说一下集成过程中应该注意的几点:
seriesRenderer.addYTextLabel(0.1, "10%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(0.2, "20%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(0.3, "30%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(0.4, "40%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(5, "50%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(6, "60%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(7, "70%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(8, "80%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(9, "90%");//针对特定的x轴值增加文本标签 seriesRenderer.addYTextLabel(10, "100%");//针对特定的x轴值增加文本标签
这段代码是设置y轴的比例,还有一个问题就是在x轴数据较多的时候我们可以通过设置这两属性可以达到文字的排放
seriesRenderer.setXLabelsPadding(90);//设置下面文字之间的间距
seriesRenderer.setXLabelsAngle(-45);//设置倾斜度
好了由于时间有限,这个图标框架就说道这里了,该简单方便。
相关文章推荐
- achartengine图标框架的使用心得
- jsmsengine使用心得(1)!
- 新控件Chart使用心得及感想
- Hibernate框架使用心得
- AchartEngine 使用总结
- 开源项目achartengine简单使用
- 使用jsmsengine发送短信息(SMS)使用心得!(原创)
- AChartEngine使用View显示图表
- Starling 为基础开发游戏框架的使用心得和技巧
- Cairngorm框架使用心得
- Engine中的跟踪层使用方法以及自定义图标
- 详细讲解网页框架frameset的使用心得
- (转)Validator 验证框架使用心得
- 新框架的构思及CSLA的使用心得
- yii框架使用心得(实用性文档)
- 网页框架分离(frameset 使用心得
- Html:frameset 使用心得 html的框架
- open-flash-chart使用心得
- achartengine之Demo学习6——demo中没使用的方法
- AchartEngine使用