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年,事业顺利,工作愉快,生活幸福美满!

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

相关文章推荐

AtCoder Grand Contest 019 E - Shuffle and Swap

链接:link题意:给两个01串AA,BB,它们11的个数相同,记aia_i表示AA中11的出现位置,bib_i表示BB中11的出现位置,将aa和bb打乱后依次交换AaiA_{a_i}和AbiA_{b...

Android中,字体大小自适应不同分辨率,以及注意事项

今天有人问我,Android系统不同分辨率,不同大小的手机,字体大小怎么去适应呢?其实字体的适应和图片的适应是一个道理的。 一、 原理如下: 假设需要适应320x240,480x320分辨率。在res...

delphi相对数据库连接

搞了好久 今天在网上找了一个 方法procedure TForm1.FormCreate(Sender: TObject); begin SetCurrentDir(Extractfilepath(A...

Android沉浸式以及虚拟键冲突的解决方法和隐藏状态栏、标题栏的实现

最近开发发现一个适配问题,有的手机只有虚拟键,并且还不能关闭,这种导致的问题就是底部导航栏无法点击,百思不得姐啊,后来经过查看资料,发现使用沉浸式就可以解决这种问题……看代码: 不同的API使...

单例模式的优缺点

单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。单例模式有三个要...
  • iblade
  • iblade
  • 2016-04-09 20:55
  • 2979

Python核心编程学习笔记(三)

1、Python对象 Python使用对象模型来存储数据,构造任何类型的值都是一个对象,所有的Python对象都拥有三个特性:身份、类型和值。 身份:每一个对象都有一个唯一的身份标识,使用内建函数...

dp,sp,px的介绍

首先来看一下他们的基本概念: px   :是屏幕的像素点 dp   :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px dip  :等同于dp sp   :同dp相似,但还...

界面之下:还原真实的 MVC、MVP、MVVM 模式

关于MVC推荐阅读博客: 《界面之下:还原真实的 MVC、MVP、MVVM 模式》 《从三层架构到MVC,MVP》 《MVC与MVP简单对比》一、前言做客户端开发、前端开发对MVC、MVP、MV...
  • iblade
  • iblade
  • 2016-03-29 14:14
  • 1630
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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