Android繪製line chart的過程(折線圖)

安卓的前端有很多不錯的開源框架,最近做了一個項目,用到了7個開源框架,雖然最近沒有時間去一點點鑽研源碼,但是對其中的一些框架還是比較熟悉了。

github上最好的chart框架是MpAndroidCharts,github地址,youtube上也有教學視頻,csdn上有中文教程,除此之外還有另外一個很簡單的一步一步畫折線圖的教程,看完以上內容,基本上已經差不多了,下面附上自己的一個demo:

public class MainActivity extends AppCompatActivity {
    public ArrayList<Entry> setXY(float[] xValues,float[] objects){
        ArrayList<Entry> y1=new ArrayList<>();
        for (int i = 0; i <objects.length ; i++) {
            y1.add(new Entry(objects[i],xValues[i]));
        }
        return y1;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LineChart lineChart=(LineChart)findViewById(R.id.line_chart);
        LineChart  lineChart2=(LineChart)findViewById(R.id.line_chart2);
        float[] floatx={1,2,3,4,5,6,7,8};
        float[] floaty={2,3,4,5,6,7,8,9};
        float[] floatx2={1,2,3,4,5,6,7,8};
        float[] floaty2={3,4,5,6,7,8,9,10};
        ArrayList<ILineDataSet> lineDataSets = new ArrayList<>();
        LineDataSet lineDataSet = new LineDataSet(this.setXY(floatx,floaty),"實例一");
        lineDataSet.setDrawCircles(false);
        lineDataSet.setColor(Color.BLACK);
        LineDataSet lineDataSetY = new LineDataSet(this.setXY(floatx2,floaty2),"實例二");
        lineDataSetY.setDrawCircles(false);
        lineDataSet.setColor(Color.RED);
        lineDataSets.add(lineDataSet);
        lineDataSets.add(lineDataSetY);
        this.setLineChart(lineChart);
        this.setLineChart(lineChart2);
        lineChart.setData(new LineData(lineDataSets));
        lineChart2.setData(new LineData(lineDataSets));
    }
    public void setLineChart(LineChart lineChart){
        //設置描述
        lineChart.setDescription("");
        Legend l = lineChart.getLegend();
        //l.setMaxSizePercent(0.8f);
        l.setFormSize(10f); // set the size of the legend forms/shapes
        l.setForm(Legend.LegendForm.CIRCLE); // set what type of form/shape should be used
      l.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);
        l.setTextSize(12f);
        l.setTextColor(Color.BLACK);
        l.setXEntrySpace(5f); // set the space between the legend entries on the x-axis
        l.setYEntrySpace(5f); // set the space between the legend entries on the y-axis
        XAxis xAxis = lineChart.getXAxis();
        //設置顯示X軸
        xAxis.setEnabled(true);
        //設置顯示位置
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //設置是否繪製x軸
        xAxis.setDrawAxisLine(true);
        //設置是否顯示x軸的座標
        xAxis.setDrawLabels(true);
        xAxis.setTextSize(10f);
        //設置網格線
        xAxis.setDrawGridLines(false);
        xAxis.setTextColor(Color.BLACK);
        xAxis.setTextSize(10f);
        //設置網格線的寬度
        xAxis.setGridLineWidth(5f);
        xAxis.setGridColor(Color.RED);
        xAxis.setAxisLineColor(Color.BLACK);
        //設置x軸的寬度
       // xAxis.setAxisLineWidth(3f);
//設置y軸
        YAxis leftAxis = lineChart.getAxisLeft();
        YAxis rightAxis = lineChart.getAxisRight();
        //撤銷最小值和最大值
        leftAxis.resetAxisMinValue();
        leftAxis.resetAxisMaxValue();
        rightAxis.setEnabled(false);
    }
}

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.hb.chart_mp.MainActivity"
    android:orientation="horizontal"
    >
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >
    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/line_chart"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:background="#ffffff"
        android:layout_margin="16dp">
    </com.github.mikephil.charting.charts.LineChart>
    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/line_chart2"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:background="#ffffff"
        android:layout_margin="16dp">
    </com.github.mikephil.charting.charts.LineChart>
    </LinearLayout>
    </ScrollView>
</LinearLayout>

效果圖:
沒有,嘿嘿,還是放上吧,可以顯示legend
紅圈裏的東西可以先顯示了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章