Android折线图

来源:互联网 发布:知乎 陈廖宇 编辑:程序博客网 时间:2024/06/16 10:33

这里使用的是hellochats框架里的折线图linechatView。使用框架有三种方法,最简单的是gradle导入依赖,还有导入jar包。但是这两种方法没有办法修改源码,但需要使用源码的时候,就得使用导入module的方式了。这里不做详细解答,自行百度。

用法比较简单。代码也容易理解,设置线同时设置点,在设置好两个坐标轴,加载就可以了。直接上代码。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.hello.MainActivity">    <lecho.lib.hellocharts.view.LineChartView        android:id="@+id/line"        android:layout_width="match_parent"        android:layout_height="300dp"        android:layout_marginTop="50dp" /></LinearLayout>
public class MainActivity extends AppCompatActivity {    private LineChartView linechart;    String[] xdata={"1号","2号","3号","4号","5号","6号","7号","8号"};//x轴数据    int[] data={10,12,13,10,11,14,9,15};//点数据    List<PointValue> pointValues=new ArrayList<PointValue>();    List<AxisValue> axisValues=new ArrayList<AxisValue>();    List<AxisValue> axisValues2=new ArrayList<AxisValue>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        linechart= (LineChartView) findViewById(line);        initchart();    }    public void initchart(){        //设置x轴显示        for(int i=0;i<xdata.length;i++){            axisValues.add(new AxisValue(i).setLabel(xdata[i]));        }        //设置点显示        for(int i=0;i<data.length;i++){            pointValues.add(new PointValue(i,data[i]));        }        for(int i=1;i<=20;i++){            axisValues2.add(new AxisValue(i).setValue(i));        }        //线的设置        Line line=new Line(pointValues);        List<Line> lines=new ArrayList<Line>();        line.setColor(Color.parseColor("#000000"));//黑色线        line.setShape(ValueShape.CIRCLE);//圆形点        line.setCubic(false);//折线        line.setFilled(false);//不填充曲线面积        line.setHasLabels(true);//线上数据坐标加上备注。        line.setHasLines(true);//显示曲线        line.setHasPoints(true);//显示点        line.setStrokeWidth(2);//设置线宽        line.setPointRadius(2);//设置点半径        lines.add(line);        LineChartData linedata=new LineChartData();        linedata.setLines(lines);//加载线        //X轴        Axis axis=new Axis();        axis.setHasTiltedLabels(true);//字体斜的显示        axis.setTextColor(Color.BLUE);        axis.setName("X轴名称");        axis.setMaxLabelChars(7);//x轴最多显示7个坐标        axis.setHasLines(true);//显示分割线        axis.setValues(axisValues);//加载X轴数据        linedata.setAxisXBottom(axis);//底部显示坐标轴        //Y轴        Axis axiy=new Axis();        axiy.setMaxLabelChars(5);//显示5个字符        axiy.setValues(axisValues2);//加载Y轴数据        linedata.setAxisYLeft(axiy);//linedata加载Y轴,左边显示        //整体设置        linechart.setZoomEnabled(false);//能缩放        //linechart.setZoomType(ZoomType.HORIZONTAL);        linechart.setInteractive(true);//可以与用户互动        linechart.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);//可以水平平滑        linechart.setLineChartData(linedata);//加载linedata        Viewport v=new Viewport(linechart.getMaximumViewport());        v.left=0;        v.right=3;//让图表只显示第1-4个点        linechart.setCurrentViewport(v);    }}