zoukankan      html  css  js  c++  java
  • 图表引擎AChartEngine 二

     这几天项目涉及到android图表绘制,网上找的Demo都是大同小异,也就如上篇博文所写的一样是基本函数的实现。可是所有能找到的Demo都和设计图不符。木有办法,Leader发话啦,万不得已的情况下不能改设计图,顾客是上帝嘛。
    AChartEngine这个开源框架已经做得非常不错了,可是在我几乎试完所有渲染效果都答不到自己预期的时候。那就只能——改源码咯!再此不得不佩服带我的师傅啊,大牛啊!再次也表达下对师傅的感激!
    现目前用的是achartengine 1.1.0,为了满足特定需求,把achartengine源码的某些方法坐了修改,生成了自己的jar包。

    1.重新修改了圆点的方法,自带的setfillPoint(false)中间会留有线。
    2.隐藏了Y轴值,但是显示出了网格。(腾讯手机管家流量监控的图也是木有显示Y轴但是有背景网格)
    3.给视图设置了显示范围。

    public XYSeriesRenderer setXYSeriesRender(){//点线的渲染,返回  点线渲染  对象
    		XYSeriesRenderer pointRender=new XYSeriesRenderer();
    		pointRender.setPointStyle(PointStyle.CIRCLE);
    		pointRender.setFillPoints(false);
    		pointRender.setLineWidth(2f);
     		pointRender.setColor(Color.rgb(64,100 , 32));
     		pointRender.setDisplayChartValues(true); 		
     		pointRender.setChartValuesTextSize(25);
     		pointRender.setShowLegendItem(true);
     		pointRender.setDisplayChartValuesDistance(30);
      		pointRender.setChartValuesTextAlign(Align.CENTER);
      		pointRender.setChartValuesSpacing(12f);
    		return pointRender;
    	}
    	public void setXYMultipleSeriesRenderer(XYSeriesRenderer pointRender,int number ){//坐标轴图形整体渲染。传入的参数是  点线渲染  对象
    		multiRenderer.setChartTitle(chartName);//设置图表标题 
    		multiRenderer.setYLabels(6);
    		multiRenderer.setXLabels(0);
    		setXLabels(xLabels);
    	 
     		 multiRenderer.setShowGrid(true);//显示网格   
    		 multiRenderer.setPointSize(3f);//设置点的大小 !
    		 multiRenderer.setChartTitleTextSize(20);//设置图表标题文字的大小   
    		 multiRenderer.setLabelsTextSize(20);//设置标签的文字大小 
    		 multiRenderer.setXLabelsAlign(Align.CENTER);//刻度线与刻度标注之间的相对位置关系  
    		 multiRenderer.setPanEnabled(true, false);//允许左右拖动,但不允许上下拖动. 
    		 multiRenderer.setZoomEnabled(true);//设置允许放大缩小. 
     		 multiRenderer.setShowLegend(false);//不显示图例
     		 multiRenderer.setYLabelsPadding(100f);//这样就看不到y坐标的值了		 
     	 // 这个会限制Y值,因为我只需要X限制位置,下面搞定!
     		 //multiRenderer.setXAxisMin(0d);//不过限制下Y其实也不错~!!
    //		 multiRenderer.setXAxisMax(5d);
    
     		multiRenderer.setShowCustomTextGrid(true);//可以显示竖条了!
     
    		 multiRenderer.setXLabelsColor(Color.rgb(64,100 , 32));
     
    		
    	 //设置整体渲染中图表区域内背景色
    		 multiRenderer.setApplyBackgroundColor(true);
    		 multiRenderer.setBackgroundColor(Color.WHITE ); 
     		 multiRenderer.setMarginsColor(Color.WHITE);
     		 
    		
    		switch(number){
    		case 0: 
    			 multiRenderer.setRange(new double[]{0d, 5d, 30d,200d });
    			break;
    

    ResultActivity.java

    public void initGraphicalView(int number) {
    	String[] xlab = new String[] { "星期一", "星期二", "星期三", "星期四"  };
    	
    	switch (number) {
    	case 0:
    	 value = new int[] { 70, 80, 70, 65 };
    	 int[] valueh=new int[]{150,130,120,150};
    		  chartDrawing = new ChartDrawing("收入/支出" , "日期", "数值",xlab);
    		chartDrawing.setXYSeries(value, "线一条线" );
    		chartDrawing.setXYMultipleSeriesRenderer(chartDrawing.setXYSeriesRender(), number);
    		chartDrawing .setXYSeries(valueh, "第二条线"  );
    		chartDrawing .setXYMultipleSeriesRenderer(chartDrawing.setXYSeriesRender(), number);
    		lView = ChartFactory.getLineChartView(context,chartDrawing.multiDate, chartDrawing.multiRenderer);
    		layout0.addView(lView);
    		break;

    如果想要下面这种效果,就按如下设置,就X轴默认,控制Y轴范围。


    switch(number){
    		case 0: 
    //			 multiRenderer.setRange(new double[]{1d, 5d, 30d,200d });
    			 multiRenderer.setYAxisMin(50d); //不限制X,即默认的x样子,限制Y的范围就OK啦
    			 multiRenderer.setYAxisMax(100d);
    			break;
    
     好啦,等项目忙完咯俺要来好好的学学AChartEngine这个开源框架~~~
    记录下学习的点滴,也供以后自己回过头来复习复习~~

         最后,时刻提醒自己一句话:学会去源码里找答案!~~加油!!



    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    使用contentProvider
    创建Sqlite数据库(一)
    AIDL实现进程间通信
    Messenger实现进程间通信(IPC)
    Serializable使用
    Parcelable使用(二)
    STAR法则
    Python系列-------基本语法
    前端随心记---------面试题集
    前端随心记---------惟客科技面试
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3766915.html
Copyright © 2011-2022 走看看