关于android报表的制作

本文展示了如何在Android应用中使用mpandroidchart库创建统计图表,包括线图和柱状图。通过示例代码,展示了初始化数据、设置图表样式以及在布局中添加图表的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章是公司的一个报表项目,要求制作统计图,折线图和柱形图,下文只是初级的模版
</pre><pre name="code" class="java">package com.keyi.report;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;

import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;

import java.util.ArrayList;

/**
 * Created by Administrator on 2016/7/8.
 */
public class ShopActivity extends Activity {
    private LineChart chart;
    private LineData data;
    private ArrayList<String> xVals;
    private LineDataSet dataSet;
    private ArrayList<LineDataSet> dataSets;
    private ArrayList<Entry> yVals;
    private BarChart barChart;

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

    private int[] mColors = new int[]{
            Color.rgb(51, 118, 171),
            Color.rgb(89, 199, 250)
    };

    private void initData() {

        dataSets = new ArrayList<>();
        xVals = new ArrayList<>();
        for (int j = 0; j < 30; j++) {
            xVals.add((j + 1) + "");
        }
        for (int i = 0; i < 2; i++) {
            yVals = new ArrayList<>();
            for (int j = 0; j < 30; j++) {
                yVals.add(new Entry((float) (Math.random() * 1000) + 3, j));
                dataSet = new LineDataSet(yVals, "");
            }
            dataSet.setColor(mColors[i]);
            dataSets.add(dataSet);
        }
        initView(dataSets);
    }

    private void initView(ArrayList<LineDataSet> dataSets) {
        chart = (LineChart) findViewById(R.id.linear);
        XAxis xAxis = chart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        Legend mLegend = chart.getLegend();
        mLegend.setEnabled(false);
//        mLegend.setPosition(Legend.LegendPosition.BELOW_CHART_CENTER);  //左下边显示
//        mLegend.setFormSize(12f);//比例块字体大小
//        mLegend.setXEntrySpace(10f);//设置距离饼图的距离,防止与饼图重合
//        mLegend.setYEntrySpace(10f);
//        mLegend.setTextColor(Color.BLUE);
//        mLegend.setTextSize(10f);
//        //设置比例块换行...
//        mLegend.setWordWrapEnabled(true);
//        mLegend.setForm(Legend.LegendForm.SQUARE);//设置比例块形状,默认为方块
        data = new LineData(xVals, dataSets);
        data.setValueTextColor(Color.rgb(255, 0, 102));
        data.setValueTextSize(10);
        chart.setDoubleTapToZoomEnabled(false);
        chart.setData(data);
        chart.getAxisRight().setEnabled(false);
        chart.animateY(0);
        chart.setGridBackgroundColor(Color.WHITE);
        chart.setDescription("单位:元");


        barChart = (BarChart) findViewById(R.id.linear1);
        barChart.setBackgroundColor(Color.WHITE);
        barChart.setDoubleTapToZoomEnabled(false);
        barChart.setDrawBarShadow(false);
        barChart.getAxisRight().setEnabled(false);
        XAxis xAxis1 = barChart.getXAxis();
        xAxis1.setPosition(XAxis.XAxisPosition.BOTTOM);

        ArrayList<String> xValues = new ArrayList<String>();
        for (int i = 0; i < 12; i++) {
            xValues.add((i + 1) + "月");
        }
        ArrayList<BarEntry> yValues = new ArrayList<BarEntry>();
        int mult = 10000;
        for (int i = 0; i < 12; i++) {
            float val1 = (float) (Math.random() * mult) + mult / 2;
            float val2 = (float) (Math.random() * mult) + mult / 2;
            yValues.add(new BarEntry(new float[]{val1, val2}, i));
        }

        // y轴的数据集合
        BarDataSet barDataSet = new BarDataSet(yValues, "");
        barDataSet.setColors(getColors());


        ArrayList<BarDataSet> barDataSets = new ArrayList<BarDataSet>();
        barDataSets.add(barDataSet); // add the datasets
        Legend mLegend1 = barChart.getLegend();
        mLegend1.setEnabled(false);
        BarData barData = new BarData(xValues, barDataSets);
        barChart.setDescriptionColor(Color.parseColor("#FF02BAFF"));
        barChart.setDescription("单位:元");
        barChart.setData(barData);
    }

    private int[] getColors() {
        int stacksize = 2;
        // have as many colors as stack-values per entry
        int[] colors = new int[stacksize];
        colors[1] = Color.rgb(21, 112, 188);
        colors[0] = Color.rgb(8, 31, 93);
        return colors;
    }
}
</pre><pre name="code" class="java">XML布局如下:
<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f0f0f0"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="none">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#f0f0f0"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:background="#367aaa"
                android:gravity="center"
                android:text="店铺概况"
                android:textColor="#fff"
                android:textSize="20dp" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:layout_marginTop="10dp"
                    android:text="店铺概况"
                    android:textColor="#666666"
                    android:textSize="15dp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="10dp"
                    android:layout_marginTop="10dp"
                    android:gravity="right"
                    android:text="2016年7月8日"
                    android:textColor="#666666"
                    android:textSize="13dp" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="34dp"
                android:layout_marginTop="8dp"
                android:background="#cfdbe7"
                android:orientation="horizontal">

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:textColor="#666666"
                    android:textSize="15dp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="销售额"
                    android:textColor="#666666"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="成交额"
                    android:textColor="#666666"
                    android:textSize="15dp" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="34dp"
                android:orientation="horizontal">

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:paddingLeft="20dp"
                    android:text="本日"
                    android:textColor="#666666"
                    android:textSize="15dp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="19,396"
                    android:textColor="#666666"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="286"
                    android:textColor="#666666"
                    android:textSize="15dp" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="34dp"
                android:background="#f6f6f6"
                android:orientation="horizontal">

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:paddingLeft="20dp"
                    android:text="昨日"
                    android:textColor="#666666"
                    android:textSize="15dp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="16,396"
                    android:textColor="#666666"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="213"
                    android:textColor="#666666"
                    android:textSize="15dp" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="34dp"
                android:orientation="horizontal">

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:paddingLeft="20dp"
                    android:text="本月"
                    android:textColor="#666666"
                    android:textSize="15dp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="19,396"
                    android:textColor="#666666"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="286"
                    android:textColor="#666666"
                    android:textSize="15dp" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="34dp"
                android:background="#f6f6f6"
                android:orientation="horizontal">

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:paddingLeft="20dp"
                    android:text="上月"
                    android:textColor="#666666"
                    android:textSize="15dp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="16,396"
                    android:textColor="#666666"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:text="213"
                    android:textColor="#666666"
                    android:textSize="15dp" />
            </LinearLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:text="30天内销售额和成交额走势"
                android:textColor="#666666"
                android:textSize="15dp" />

            <com.github.mikephil.charting.charts.LineChart
                android:id="@+id/linear"
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:layout_marginTop="10dp"></com.github.mikephil.charting.charts.LineChart>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:text="一年销售额和成交额"
                android:textColor="#666666"
                android:textSize="15dp" />

            <com.github.mikephil.charting.charts.BarChart
                android:id="@+id/linear1"
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:layout_marginBottom="20dp"
                android:background="#f0f0f0"></com.github.mikephil.charting.charts.BarChart>
        </LinearLayout>
    </ScrollView>
</LinearLayout>
</pre><pre name="code" class="html">PS:需要导入mpandroidchartlibrary-2-1-6.jar这个JAR包


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值