zoukankan      html  css  js  c++  java
  • 团队十日冲刺6

    今日tips

    今天学习了Android Studio 使用AChartEngine制作饼图

    AChartEngine简介:

           AChartEngine是一款基于Android的图表绘制引擎;

           AChartEngine支持绘制饼图、柱状图、折线图、散点图等;

           AChartEngine绘制的图表都支持水平(默认)或垂直方式展示,并且支持许多其他的自定义功能;

           所有的图表都可以建立为一个view,也可以建立为一个用于启动activity的intent。

    AChartEngine的运行机制:

           每个图表都需要一个数据集 (Dataset) 和 渲染器集合 (Renderer);

           数据集:由许多数据组成;

           渲染器:由不同的子渲染器组成;

           获取Activity 或 组件 : 图表工厂 (ChartFactory) 通过调用 数据集 (Dataset) 和 渲染器集合 (Renderer) 可以生成带图表的 GraphicalView 或者 GraphicalActivity。

    效果图:

             

    具体步骤:

           1、下载AChartEngine库:http://code.google.com/p/achartengine/downloads/list

           2、将下载的jar包引入到项目

           3、构建数据集(Dataset),CategorySeries.add(String category,double value)

    double[] values = {500.00, 800.00, 1000.00, 900.00};
    double sumVal = values[0] + values[1] + values[2] + values[3];
    
    CategorySeries dataset = buildCategoryDataset("图文报表", values);
    
    protected CategorySeries buildCategoryDataset(String title, double[] values){
        CategorySeries series = new CategorySeries(title);
        series.add("房租:"+values[0], values[0]/sumVal);
        series.add("伙食费:"+values[1], values[1]/sumVal);
         series.add("生活费:"+values[2], values[2]/sumVal);
         series.add("其它:"+values[3], values[3]/sumVal);
         return series;
     }

    4、构建渲染器(Renderer)

                饼图的渲染器:

    private DefaultRenderer getPieRenderer(){
         DefaultRenderer renderer = new DefaultRenderer();
        renderer.setZoomButtonsVisible(true);//设置显示放大放小缩小按钮
         renderer.setZoomEnabled(true);//设置允许放大放小
         //设置各个类别分别对应的颜色
         SimpleSeriesRenderer yellowRenderer = new SimpleSeriesRenderer();
         yellowRenderer.setColor(Color.YELLOW);
         SimpleSeriesRenderer blueRenderer = new SimpleSeriesRenderer();
         blueRenderer.setColor(Color.BLUE);
         SimpleSeriesRenderer redRenderer = new SimpleSeriesRenderer();
         redRenderer.setColor(Color.RED);
         renderer.addSeriesRenderer(yellowRenderer);
         renderer.addSeriesRenderer(blueRenderer);
         renderer.addSeriesRenderer(redRenderer);
     
         renderer.setLabelsTextSize(30);//设置坐标字号
         renderer.setLegendTextSize(50);//设置图例字号
         renderer.setApplyBackgroundColor(true);//设置是否应用背景色
         renderer.setBackgroundColor(Color.BLACK);
     
         return renderer;
     }

    对应的颜色:       

    int[] colors = {Color.BLUE, Color.GREEN, Color.MAGENTA, Color.RED};
     
     DefaultRenderer renderer = buildCategoryRenderer(colors);
     
     protected DefaultRenderer buildCategoryRenderer(int[] colors){
         DefaultRenderer renderer = new DefaultRenderer();
         renderer.setLegendTextSize(35);//设置左下角标注文字的大小
         renderer.setLabelsTextSize(25);//饼图上标记文字的字体大小
         renderer.setLabelsColor(Color.BLACK);//饼图上标记文字的颜色
         renderer.setPanEnabled(false);
        renderer.setDisplayValues(true);//显示数据
     
     
         for(int color : colors){
             SimpleSeriesRenderer r = new SimpleSeriesRenderer();
             r.setColor(color);
             //设置百分比
             r.setChartValuesFormat(NumberFormat.getPercentInstance());
             renderer.addSeriesRenderer(r);
         }
         return renderer;
    }

     5、生成饼图

                有两种方式:调用ChartFactory.getPieChartIntent() 或者 getPieChartView()

                区别在于:

                一个返回Intent,这个intent可以启动一个特定的activity;

                另一个返回GraphicalView,这个GraphicalView可以灵活设置,它可以仅作为一部分显示在任何activity上

                用ChartFactory.getPieChartIntent()方法生成饼图:

                

                (备注:使用该方法的话,则需要在AndroidManifest.xml中注册org.achartengine.GraphicalActivity,添加位置如下图:)

    <LinearLayout
         android:id="@+id/ll_expense_piechart"
         android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
         android:layout_centerVertical="true"
         android:orientation="vertical"></LinearLayout>

     Activity文件中生成饼图: 

    private LinearLayout ll_expense_piechart;
     private GraphicalView graphicalView;
         
     private void initPieChart(View v){
         ll_expense_piechart = (LinearLayout) v.findViewById(R.id.ll_expense_piechart);
         ll_expense_piechart.removeAllViews();
     
         graphicalView = ChartFactory.getPieChartView(getContext()
                 ,dataset, renderer);//饼状图
         graphicalView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     
         ll_expense_piechart.addView(graphicalView);
     }

    转自:https://www.cnblogs.com/198h/p/12793904.html

  • 相关阅读:
    node 读取文件
    jQuery全局事件处理函数
    可以发送不同源请求的方式
    ajax 高度封装的函数
    jQuery中AJAX的回调
    jQuery中对AJAX的封装
    ajax 基本的封装
    AJAX 返回数据问题
    ajax 关于响应类型
    动态渲染数据到表格中
  • 原文地址:https://www.cnblogs.com/zql-42/p/13028824.html
Copyright © 2011-2022 走看看