Android集成统计图 饼状图 折线图 和 柱状图

原创 2017年01月03日 14:25:12

先上效果图:

这里写图片描述

使用到第三方的Jar包:下载链接:

下载地址

下载好之后 添加到buildPath

下面是布局文件中的代码:只需要使用一个空白的布局文件去接收存放这个图形就行
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#eceff4"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

    <!-- 导航栏 -->

    <RelativeLayout
        android:id="@+id/nav_bar_top_ll"
        android:layout_width="match_parent"
        android:layout_height="@dimen/height64"
        android:background="@drawable/nav_bar_bg_selector"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/more_nav_bar_left_btn"
            android:layout_width="@dimen/width50"
            android:layout_height="match_parent"
            android:background="@null"
            android:drawableLeft="@drawable/go_back_icon"
            android:paddingLeft="@dimen/width18" />

        <View
            android:id="@+id/more_nav_bar_right_btn"
            android:layout_width="@dimen/width50"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toLeftOf="@id/more_nav_bar_right_btn"
            android:layout_toRightOf="@id/more_nav_bar_left_btn"
            android:gravity="center"
            android:text="当天订单统计"
            android:textColor="@color/black"
            android:textSize="@dimen/tSize20" />
    </RelativeLayout>
    <!-- 导航栏 end -->

    <LinearLayout
        android:id="@+id/rootView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:orientation="vertical" >
    </LinearLayout>

</LinearLayout>
下面是在activity中的配置
private LinearLayout rootView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_days_order);

        rootView = (LinearLayout) findViewById(R.id.rootView);
        // 导航栏返回按钮的点击事件
        Button back = (Button) findViewById(R.id.more_nav_bar_left_btn);
        back.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

        initData();

    }

    /**
     * 
     *@Description: 填充数据
     *@Author: gyz
     *@Since: 2017-1-3上午11:24:26
     */
    private void initData() {
        ArrayList<ChartBean> list=new ArrayList<ChartBean>();
        list.add(new ChartBean("8月份", 167649,"#04FE7C"));
        list.add(new ChartBean("9月份", 227347,"#AFD8F8"));
        list.add(new ChartBean("10月份", 232565,"#8BBA00"));
        list.add(new ChartBean("11月份", 285350,"#FF8E46"));

        rootView.removeAllViews();
        rootView.addView(getPieView(this, list));
    }

    private GraphicalView getPieView(Context context, List<ChartBean> list) {

        final CategorySeries series = new CategorySeries("pie");
        final DefaultRenderer renderer = new DefaultRenderer();

        for (ChartBean b : list) {
            series.add(b.label, b.value);

            SimpleSeriesRenderer r = new SimpleSeriesRenderer();
            r.setColor(Color.parseColor(b.color));
            r.setDisplayBoundingPoints(true);
            r.setDisplayChartValuesDistance(5);
            r.setDisplayChartValues(true);
            r.setChartValuesTextSize(20);
            renderer.addSeriesRenderer(r);
        }

        renderer.setLabelsColor(Color.BLACK);
        renderer.setShowLabels(true);
        renderer.setLabelsTextSize(25);
        renderer.setLegendTextSize(30);

        renderer.setDisplayValues(true);

        renderer.setPanEnabled(false);// 移动
        renderer.setZoomEnabled(false);// 缩放

        renderer.setAntialiasing(true);
        renderer.setClickEnabled(true);

        final GraphicalView view = ChartFactory.getPieChartView(context, series, renderer);
        view.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                SeriesSelection seriesSelection = view.getCurrentSeriesAndPoint();
                if (seriesSelection != null) {
                    for (int i = 0; i < series.getItemCount(); i++) {
                        renderer.getSeriesRendererAt(i).setHighlighted(i == seriesSelection.getPointIndex());
                    }
                    view.repaint();
                }
            }
        });
        return view;
    }
chartBean
public class ChartBean  implements Parcelable{

    public String label;
    public int value;
    public String color;

    public ChartBean(String label, int value, String color) {
        this.label = label;
        this.value = value;
        this.color = color;
    }

    @Override
    public String toString() {
        return "ChartBean [label=" + label + ", value=" + value + ", color=" + color + "]";
    }

    public ChartBean(Parcel source){
        this.label=source.readString();
        this.value=source.readInt();
        this.color=source.readString();
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(label);
        dest.writeInt(value);
        dest.writeString(color);
    }

    //实例化静态内部对象CREATOR实现接口Parcelable.Creator  
    public static final Parcelable.Creator<ChartBean> CREATOR = new Creator<ChartBean>() {  

        @Override  
        public ChartBean[] newArray(int size) {  
            return new ChartBean[size];  
        }  

        //将Parcel对象反序列化为ParcelableDate  
        @Override  
        public ChartBean createFromParcel(Parcel source) {  
            return new ChartBean(source);  
        }  
    };  

}
以上就是简单的饼状图集成步骤

祝大家在2017年,事业顺利,工作愉快,生活幸福美满!

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android Canvas练习(2)自已绘饼图(Pie Chart)

上文弄了个绘制报表的,有了报表,当然想一并也绘个饼图,柱形图之类的玩玩,看看了API,觉得应当很简单,饼图实现了下, 实现代码确实也很简单,Android的这些函数封装的确实好用。          ...
  • xcltapestry
  • xcltapestry
  • 2014年04月07日 17:51
  • 9651

Android PieChart 饼图控件

一个Android自定义圆形饼图,可显示标题和值,饼上显示百分比。
  • u010053224
  • u010053224
  • 2016年07月01日 10:54
  • 5430

Android图表库MPAndroidChart(八)——饼状图的扩展:折线饼状图

Android图表库MPAndroidChart(八)——饼状图的扩展:折线饼状图 我们接着上文,饼状图的扩展,增加折现的说明,来看下我们要实现的效果 因为之前对MPAndroidChart的熟...
  • qq_26787115
  • qq_26787115
  • 2016年11月22日 14:03
  • 6370

Android图表库MPAndroidChart(八)——饼状图的扩展:折线饼状图

Android图表库MPAndroidChart(八)——饼状图的扩展:折线饼状图
  • u013651026
  • u013651026
  • 2017年12月12日 11:16
  • 217

自定义一个动态饼状图

效果图: 下面是主要的view代码。他的自定义属性可以设可以不设,可以通过在activity里获取到的view实例 设置颜色和值。颜色和值需字符串形式。你也可以自己修改。 还有AngelEval...
  • yang_niuxxx
  • yang_niuxxx
  • 2016年09月21日 16:24
  • 838

手撸一个Android饼状图表(空心圆)

以前写过一篇博客 手撸一个Android饼状图表 自定义view中绘制了一个饼状图。项目中我们还经常用到一些饼状图是空心的圆看起来也很好看。 OK 空心圆的饼状图怎么绘制呢 ,下面就把 手撸一个A...
  • mingyunxiaohai
  • mingyunxiaohai
  • 2017年02月27日 14:34
  • 864

Android折线图、饼状图

Android图表 本文记录自身学习状态,也为初学者提供方便,高手可以避让撸代码去。 先看下运行效果: 这块的折线图、饼状图采用的是hellochart,开源库,github地址: https:/...
  • jinjin10086
  • jinjin10086
  • 2016年08月05日 14:22
  • 1400

Android统计图(饼图、折线图、柱状图)源码

  • 2014年05月16日 20:23
  • 147KB
  • 下载

Android HelloChart开源库图表(二)之饼图

Android hellochart 之 饼图
  • wwdlss
  • wwdlss
  • 2015年11月23日 17:56
  • 4318

Android Canvas练习(9)自已绘分割突出效果的饼图(Pie Chart)

这里画了个饼图的变种,具有分割突出效果的饼图(Pie Chart),就是个切蛋糕效果的饼图,画这种图,其技巧就在于圆心的偏移。 在圆心偏移,半径不变的基础上,效果就出来了。     上图:   ...
  • xcltapestry
  • xcltapestry
  • 2014年04月13日 10:24
  • 3580
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android集成统计图 饼状图 折线图 和 柱状图
举报原因:
原因补充:

(最多只允许输入30个字)