(备忘录)图表嵌入(1)

来源:互联网 发布:网络虚拟礼物 编辑:程序博客网 时间:2024/06/05 21:58

图表引入(折线图、柱状图、饼状图)

引入

工程的build中:

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

项目的build中:
compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'


使用

一、折线图
在xml中:
<LinearLayout    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center_vertical"    android:background="@android:color/holo_purple">    <com.github.mikephil.charting.charts.LineChart        android:id="@+id/line_chart"        android:layout_width="match_parent"        android:layout_height="300dp"/></LinearLayout>
在activity中:
LineChart lineChart;//声明一个字体库private Typeface mtf;@Overrideprotected void initData() {    mtf = Typeface.createFromAsset(getAssets(),"OpenSans-Regular.ttf");    //描述    lineChart.getDescription().setEnabled(false);    Description des = new Description();    des.setText("123123");    lineChart.setDescription(des);    //网格背景    lineChart.setDrawGridBackground(false);    //当前的x轴对象    XAxis xAxis = lineChart.getXAxis();    //x轴显示位置    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);    //x轴的字体    xAxis.setTypeface(mtf);    //x轴的网格线    xAxis.setDrawGridLines(false);    //x轴的轴线    xAxis.setDrawAxisLine(true);    //获取左边的y轴对象    YAxis leftAxis = lineChart.getAxisLeft();    //y轴的字体    leftAxis.setTypeface(mtf);    //5:左边y轴的区间的个数  false:是否均匀分布    leftAxis.setLabelCount(5,false);    leftAxis.setDrawGridLines(false);    YAxis rightAxis = lineChart.getAxisRight();    rightAxis.setTypeface(mtf);    rightAxis.setLabelCount(5,false);    rightAxis.setDrawGridLines(false);    //数据    LineData lineData = generateDataLine(1);    lineChart.setData(lineData);    lineChart.animateX(750);}
private LineData generateDataLine(int cnt) {    //折线1    ArrayList<Entry> e1 = new ArrayList<Entry>();    //折线中的点    for (int i = 0; i < 12; i++) {        e1.add(new Entry(i, (int) (Math.random() * 65) + 40));    }    LineDataSet d1 = new LineDataSet(e1, "New DataSet " + cnt + ", (1)");    d1.setLineWidth(2.5f);    d1.setCircleRadius(4.5f);    d1.setHighLightColor(Color.rgb(244, 117, 117));    //是否显示小圆点上的数值    d1.setDrawValues(false);    //折线2    ArrayList<Entry> e2 = new ArrayList<Entry>();    for (int i = 0; i < 12; i++) {        e2.add(new Entry(i, e1.get(i).getY() - 30));    }    LineDataSet d2 = new LineDataSet(e2, "New DataSet " + cnt + ", (2)");    d2.setLineWidth(2.5f);    d2.setCircleRadius(4.5f);    d2.setHighLightColor(Color.rgb(244, 117, 117));    d2.setColor(ColorTemplate.VORDIPLOM_COLORS[0]);    d2.setCircleColor(ColorTemplate.VORDIPLOM_COLORS[0]);    d2.setDrawValues(false);    ArrayList<ILineDataSet> sets = new ArrayList<ILineDataSet>();    sets.add(d1);    sets.add(d2);    LineData cd = new LineData(sets);    return cd;}




二、柱状图
在xml中:
<LinearLayout    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center_vertical"    android:background="@android:color/holo_purple">    <com.github.mikephil.charting.charts.BarChart        android:id="@+id/bar_chart"        android:layout_width="match_parent"        android:layout_height="300dp"/></LinearLayout>
在activity中:
 BarChart barChart;    private Typeface mTf;    @Override    protected void initData() {        mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");        //描述        barChart.getDescription().setEnabled(false);        barChart.setDrawGridBackground(false);        barChart.setDrawBarShadow(false);        XAxis xAxis = barChart.getXAxis();        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);        xAxis.setTypeface(mTf);        xAxis.setDrawGridLines(false);        xAxis.setDrawAxisLine(true);        YAxis leftAxis = barChart.getAxisLeft();        leftAxis.setTypeface(mTf);        leftAxis.setLabelCount(5, false);        leftAxis.setSpaceTop(20f);        leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)        YAxis rightAxis = barChart.getAxisRight();        rightAxis.setTypeface(mTf);        rightAxis.setLabelCount(5, false);        rightAxis.setSpaceTop(20f);        rightAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)        BarData mChartData = generateDataBar(1);        mChartData.setValueTypeface(mTf);        // set data        barChart.setData((BarData) mChartData);        barChart.setFitBars(true);        // do not forget to refresh the chart//        holder.chart.invalidate();        barChart.animateY(700);    }
private BarData generateDataBar(int cnt) {    ArrayList<BarEntry> entries = new ArrayList<BarEntry>();    for (int i = 0; i < 12; i++) {        entries.add(new BarEntry(i, (int) (Math.random() * 70) + 30));    }    BarDataSet d = new BarDataSet(entries, "New DataSet " + cnt);    d.setColors(ColorTemplate.VORDIPLOM_COLORS);    d.setHighLightAlpha(255);    BarData cd = new BarData(d);    cd.setBarWidth(0.9f);    return cd;}



三、饼状图
在xml中:
<LinearLayout    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center_vertical"    android:background="@android:color/holo_purple">    <com.github.mikephil.charting.charts.PieChart        android:id="@+id/pie_chart"        android:layout_width="match_parent"        android:layout_height="300dp"/></LinearLayout>

在activity中
//声明一个字体库private Typeface mTf;@Overrideprotected void initData() {    mTf = Typeface.createFromAsset(getAssets(),"OpenSans-Regular.ttf");    // apply styling    pieChart.getDescription().setEnabled(false);    pieChart.setHoleRadius(52f);    pieChart.setTransparentCircleRadius(57f);    pieChart.setCenterText("1234567890");    pieChart.setCenterTextTypeface(mTf);    pieChart.setCenterTextSize(9f);    pieChart.setUsePercentValues(true);    pieChart.setExtraOffsets(5, 10, 50, 10);    PieData mChartData = generateDataPie(1);    mChartData.setValueFormatter(new PercentFormatter());    mChartData.setValueTypeface(mTf);    mChartData.setValueTextSize(11f);    mChartData.setValueTextColor(Color.WHITE);    // set data    pieChart.setData((PieData) mChartData);    Legend l = pieChart.getLegend();    l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);    l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);    l.setOrientation(Legend.LegendOrientation.VERTICAL);    l.setDrawInside(false);    l.setYEntrySpace(0f);    l.setYOffset(0f);    // do not forget to refresh the chart    // holder.chart.invalidate();    pieChart.animateY(900);}
private PieData generateDataPie(int cnt) {    ArrayList<PieEntry> entries = new ArrayList<PieEntry>();    for (int i = 0; i < 4; i++) {        entries.add(new PieEntry((float) ((Math.random() * 70) + 30), "Quarter " + (i+1)));    }    PieDataSet d = new PieDataSet(entries, "");    // space between slices    d.setSliceSpace(2f);    d.setColors(ColorTemplate.VORDIPLOM_COLORS);    PieData cd = new PieData(d);    return cd;}


注:
1、使用的图标框架:
https://github.com/PhilJay/MPAndroidChart
2、“OpenSans-Regular.ttf”在上述的github中可以找到,然后放在assets中就可以使用了

原创粉丝点击