大二下学期每日总结之第一次个人作业(第三阶段)

今日主要学习了MPAndroid折线图:

1.首先要引入开源库:

在项目根目录的build.gradle文件中加入如下代码

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

在app根目录的buil.gradle文件中加入依赖

dependencies {
    compile 'com.github.PhilJay:MPAndroidChart:v3.0.1'
}

2.实现利用Entry存放数据:

List<Entry> list = new ArrayList<>();
            for (int i = 0; i < listwendate.size(); i++) {
                list.add(new Entry(i, listwendate.get(i).getWendu()));
                System.out.println(listwendate.get(i).getWendu());//其中两个数字对应的分别是   X轴   Y轴
            }

3.再创建LineDataSet对折线图的的一些属性进行设置:

 LineDataSet lineDataSet = new LineDataSet(list, "温度");        lineDataSet.setColor(getResources().getColor(R.color.teal_200));            //折线颜色
            lineDataSet.setFillColor(getResources().getColor(R.color.teal_200));        //折线以下填充颜色
            lineDataSet.setDrawFilled(true);                                                   //是否填充
            lineDataSet.setFillAlpha(10);                                                      //填充颜色透明度
            lineDataSet.setLineWidth(1f);                                                      //折线宽度
            //是否画折线点上的空心圆  false表示直接画成实心圆
            lineDataSet.setDrawCircleHole(false);
            // lineDataSet.setValueTextColor(getResources().getColor(R.color.tv_default_blue));   //折线上数值颜色
            //  lineDataSet.setCircleColor(getResources().getColor(R.color.tv_default_blue));      //折线上圆点的颜色
            lineDataSet.setCircleRadius(2);                                                    //圆点的半径
            lineDataSet.setValueTextSize(12);//折线字号
            LineData lineData = new LineData(lineDataSet);

4.对控件进行一些设置:

map_Linechart.setData(lineData);
            map_Linechart.setScaleXEnabled(true);   //支持x轴缩放
            map_Linechart.setScaleYEnabled(false);  //禁止y轴缩放
//          lineChart1.getXAxis().setLabelRotationAngle(-15);
//          map_Linechart.getXAxis().setDrawGridLines(false);                   //是否绘制X轴上的网格线(背景里面的竖线
//          map_Linechart.getAxisLeft().setDrawGridLines(false);                //是否绘制Y轴上的网格线(背景里面的横线)
//          lineChart1.getXAxis().setGridColor(getResources().getColor(R.color.tv_default_gray));
//          lineChart1.getAxisLeft().setGridColor(getResources().getColor(R.color.tv_default_gray));
            map_Linechart.getXAxis().setGranularity(1);
 map_Linechart.getDescription().setEnabled(false);                   //隐藏文字介绍
            map_Linechart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);   //X轴所在位置   默认为上面
            map_Linechart.getLegend().setEnabled(false);                        //隐藏图例
//            lineChart1.getAxisLeft().setEnabled(false);                      //隐藏左边的y轴
            map_Linechart.getAxisRight().setEnabled(false);                     //隐藏右边的y轴

            //数据更新
            map_Linechart.notifyDataSetChanged();
            map_Linechart.invalidate();

5.自定义x轴以及折线上显示的内容:

 lineDataSet.setValueFormatter(new IValueFormatter() {
                @Override
                public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
                    return ""+listwendate.get(dataSetIndex).getWendu();
                }
            });
 map_Linechart.getXAxis().setValueFormatter(new IAxisValueFormatter() {
                @Override
                public String getFormattedValue(float v, AxisBase axisBase) {
                    if (v < listwendate.size()) {
                        String s = String.valueOf(listwendate.get((int) v).getDateandtime());
                        String[] time=s.split(" ");
                        String month = time[0].substring(5, 7);
                        String day = time[0].substring(8,10);
                        return month + "." + day;
                    }
                    return "";
                }
            });

 

posted @ 2021-03-09 20:40  风吹过半夏  阅读(60)  评论(0编辑  收藏  举报