• 简单家庭记账本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());

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

  • 相关阅读:
    php 将英文引号成对转换为中文引号
    centos 6.2 x86_64 编译安装 httpd2.4.2时,apr报错
    PHP在通过非HTTP方式或多客户端的情况下,session的共享
    用c链接mysql
    多进程和多线程有什么区别
    进程和线程的区别
    linux中重要数据声明
    春节后返校第三天
    窗外下着雨——来到南京的第一篇
    中断门与陷阱门的区别
  • 原文地址:https://www.cnblogs.com/weixiao1717/p/12315484.html
Copyright © 2020-2023  润新知