安卓的前端有很多不錯的開源框架,最近做了一個項目,用到了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