简单家庭记账本app开发进度五

在完成的数据库操作后,自己看到别人的app都有图表,于是自己也尝试学了下安卓中的图表。刚开始学习过程有些坎坷,但学习后发现并没有自己想象的那么难,因为图表是使用第三方库进行创建的,所以自己不用再创建相关的方法,想要实现某种样式,只需要自己调用第三方库中方法,修改相关的设置属性即可。

图表组件MPAndroidChart的简单学习-----制作自己的饼图

如何使用:

方式一、切换到project目录下,在lib目录下导入jar包。 下载和查看源码的网址:https://github.com/PhilJay/MPAndroidChart

方式二、添加依赖(本人比较喜欢这种,方便快捷)V2.2.2是版本号,可替换成最新版本。

自己的简单小Demo

创建布局文件:

 <com.github.mikephil.charting.charts.PieChart
        android:id="@+id/pie_chart"
        android:layout_height="250dp"
        android:layout_width="match_parent"
        />

将饼图的显示和相关设置封装在一个类中

public class ChartManager {
    private Activity mContext;
    ArrayList<Integer> mOriginColors=new ArrayList<Integer>();
    public ChartManager(Activity context){
        mContext=context;
        mOriginColors.add(Color.parseColor("#59EA3A"));
        mOriginColors.add(Color.parseColor("#FFFA40"));
        mOriginColors.add(Color.parseColor("#E238A7"));

        mOriginColors.add(Color.parseColor("#8DB42D"));
        mOriginColors.add(Color.parseColor("#3DA028"));
        mOriginColors.add(Color.parseColor("#BFBC30"));
        mOriginColors.add(Color.parseColor("#94256D"));

        mOriginColors.add(Color.parseColor("#66C3E3"));
        mOriginColors.add(Color.parseColor("#39B8E3"));
        mOriginColors.add(Color.parseColor("#0095C6"));
        mOriginColors.add(Color.parseColor("#257995"));
        mOriginColors.add(Color.parseColor("#006181"));
    }


    public void showPieChartAccount (PieChart piechart, String date){
        //数据
        AccountApplication app= (AccountApplication) mContext.getApplication();
        AccountDao dbManager=app.getmDatabasemanager();
        List<AccountItem> incomeAccountList=dbManager.getOutlayStaticsList(date);

        //每个小饼图的内容
        ArrayList<String> xValues=new ArrayList<String>();

        //每个小饼图的实际数据
        ArrayList<Entry> yValues=new ArrayList<Entry>();
        //饼图颜色
        ArrayList<Integer> colors=new ArrayList<Integer>();

        for(int i=0;i<incomeAccountList.size();i++){
            xValues.add(incomeAccountList.get(i).getCategory());
            yValues.add(new Entry((float)incomeAccountList.get(i).getMoney(),i,incomeAccountList.get(i).getCategory()));
            colors.add(mOriginColors.get(i%mOriginColors.size()));
        }

        //y轴的集合
        PieDataSet pieDataset=new PieDataSet(yValues,"");
        //设置各个饼图之间的距离
        pieDataset.setSliceSpace(2f);
        pieDataset.setColors(colors);

        PieData pieData=new PieData(xValues,pieDataset);
        pieData.setValueTextSize(14f);
        pieData.setHighlightEnabled(true);
        // 设置饼块之间的间隔


        piechart.setData(pieData);

        //设置图例
        Legend mLegend=piechart.getLegend();  //设置比例图,不显示
        mLegend.setPosition(Legend.LegendPosition.RIGHT_OF_CHART_CENTER); //最右边显示
        mLegend.setForm(Legend.LegendForm.SQUARE);  //设置比例图的形状,默认式方形
        mLegend.setXEntrySpace(7f);
        mLegend.setYEntrySpace(5f);
        mLegend.setEnabled(true);  //显示比例图即显示小方块


        piechart.setDrawCenterText(true);  //饼状图中间可以添加文字
        piechart.setCenterText("支出总览");  //饼状图中间的文字

        //设置动画效果
        piechart.animateXY(1000,1000); //设置动画

        DisplayMetrics displayMetrics=mContext.getResources().getDisplayMetrics();
        float px=5*(displayMetrics.densityDpi/160f);
        //选中多出的长度
        pieDataset.setSelectionShift(px);
        piechart.invalidate();

    }


}

在Java文件中获取组件ID,并从上面的类得到一个饼图,将饼图加载到组件上。

        PieChart pieChart=mRootView_summary.findViewById(R.id.pie_chart);
        ChartManager chartManager=new ChartManager(this.getActivity());
        chartManager.showPieChartAccount(pieChart,app.getCurrentMonth());

运行示例:(分类统计支出类别)

原文地址:https://www.cnblogs.com/weixiao1717/p/12315484.html