4月15日

今天我们先来一个折线图吧!

使用的支持包是MPAndroidChartv.jar,在这里下载即可:

https://pan.baidu.com/s/108nOsWlZslhDhph-jeaGAQ   提取码:iqfo

pages.java:

复制代码
public class pages extends AppCompatActivity {

    private LineChart lineChart; //折线图控件

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

        lineChart = findViewById(R.id.lc);
        initLineChart();
    }

    private void initLineChart() {
        lineChart.animateXY(2000, 2000);
        Description description = new Description();
        description.setText(""); 
        lineChart.setDescription(description);
        Legend legend = lineChart.getLegend();
        legend.setTextColor(0);
        setYAxis();
        setXAxis();
        setData();
    }

    private void setData() {
// 模拟数据1
        dao dao=new dao(pages.this);
        SharedPreferences sp = pages.this.getSharedPreferences("temper", MODE_PRIVATE);
        String name=sp.getString("code","未设定");

        ArrayList<info> pa= dao.sermer(name);
        List<Entry> yVals1 = new ArrayList<>();
        for (int i = 0;i<pa.size(); i++) {
            yVals1.add(new Entry(i, Float.parseFloat(pa.get(i).getTem())));
        }
        // 2. 分别通过每一组Entry对象集合的数据创建折线数据集
        LineDataSet lineDataSet1 = new LineDataSet(yVals1, "体温变化");
        lineDataSet1.setCircleRadius(5); //设置点圆的半径
        lineDataSet1.setDrawCircleHole(false); // 不绘制圆洞,即为实心圆点
        // 值的字体大小为12dp
        lineDataSet1.setValueTextSize(12f);
        //将每一组折线数据集添加到折线数据中
        LineData lineData = new LineData(lineDataSet1);
        //设置颜色
        lineData.setValueTextColor(Color.BLACK);
        //将折线数据设置给图表
        lineChart.setData(lineData);
    }


    private void setXAxis() {
        XAxis xAxis = lineChart.getXAxis();
        xAxis.setDrawAxisLine(false);
        xAxis.setDrawGridLines(false);
        // 模拟X轴标签数据
        dao dao=new dao(pages.this);
        SharedPreferences sp = pages.this.getSharedPreferences("temper", MODE_PRIVATE);
        //存入数据
        String name=sp.getString("code","未设定");
        ArrayList<info> pa= dao.sermer(name);
        String[] weekStrs=new String[10];
        for(int i=0;i<pa.size();i++){
             weekStrs[i]=pa.get(i).getTime();
        }
        xAxis.setLabelCount(pa.size());        xAxis.setTextColor(Color.GREEN); 
        xAxis.setTextSize(5f); 
        xAxis.setGranularity(1f);
        xAxis.setAxisMinimum(-0.1f); // 设置X轴最小值
        //设置颜色
        xAxis.setTextColor(Color.BLACK);
        // 设置标签的显示格式
        xAxis.setValueFormatter(new IndexAxisValueFormatter(){
            @Override
            public String getFormattedValue(float value) {
                return weekStrs[(int) value];
            }
        });
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); // 在底部显示

    }

    private void setYAxis() {
        YAxis yAxisLeft = lineChart.getAxisLeft();// 左边Y轴
        yAxisLeft.setDrawAxisLine(true); // 绘制Y轴
        yAxisLeft.setDrawLabels(true); // 绘制标签
        yAxisLeft.setAxisMaxValue(40); // 设置Y轴最大值
        yAxisLeft.setAxisMinValue(34); // 设置Y轴最小值
        yAxisLeft.setGranularity(2f); // 设置间隔尺寸
        yAxisLeft.setTextColor(Color.BLACK); //设置颜色
        yAxisLeft.setValueFormatter(new IndexAxisValueFormatter(){
            @Override
            public String getFormattedValue(float value) {
                return (int)value  + "℃";
            }
        });
        // 右侧Y轴
        lineChart.getAxisRight().setEnabled(false); // 不启用

    }
}
复制代码

activity_pages.xml:

    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/lc"
        android:layout_width="match_parent"
        android:background="#FFFFFF"
        android:layout_height="400dp"/>

这样就可以显示如下的一个折线图了(为了测试提前编了几天的数据):

 这个控件还可以做饼图、柱形图、旭日图之类很帅气的视图,我这个最多算是超级小白入门作品啦……

好,那么今天就是这些!

原文地址:https://www.cnblogs.com/ldy2396/p/14909431.html