Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> (Android 應用之路) MPAndroidChart~PieChart

(Android 應用之路) MPAndroidChart~PieChart

編輯:關於Android編程

簡介

AndroidChart">MPAndroidChart是PhilJay大神給Android開發者帶來的福利。MPAndroidChart是一個功能強大並且使用靈活的圖表開源庫,支持Android和IOS兩種,這裡我們暫時只關注Android版本。

Wiki

https://github.com/PhilJay/MPAndroidChart/wiki

Javadoc

https://jitpack.io/com/github/PhilJay/MPAndroidChart/v3.0.0-beta1/javadoc/

今日之圖~PieChart

先看下效果壓壓驚,右邊的圖為左邊的圖橫向拉伸後的效果
這裡寫圖片描述

實際靜態效果,上面那個是因為加了動畫,錄制Gif的時候不小心弄成了一直旋轉的效果<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxpbWcgYWx0PQ=="這裡寫圖片描述" src="/uploadfile/Collfiles/20160906/2016090609284137.png" title="\" /> 這裡寫圖片描述

布局文件




    

對於Chart,可以采用布局文件添加方式,也可以采用代碼添加方式。

代碼

public class MainActivity extends AppCompatActivity {
    @Bind(R.id.piechart)
    PieChart piechart;

    private Random random;//用於產生隨機數字

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        random = new Random();
        initPieChart();//初始化餅圖
    }

    private void initPieChart() {
        ArrayList yVals = new ArrayList<>(); //值坐標
        ArrayList xVals = new ArrayList<>();//對應的Lable,可以理解成X軸
        for (int i = 0; i < 5; i++) {
            xVals.add((i + 1) + "月");
            yVals.add(new BarEntry(random.nextInt(10000), i));
        }
        PieDataSet pieDataSet = new PieDataSet(yVals, "小明每月支出");//創建餅圖的一個數據集
        pieDataSet.setColors(ColorTemplate.COLORFUL_COLORS); //設置成豐富多彩的顏色
        DisplayMetrics metrics = getResources().getDisplayMetrics();
        float px = 10 * (metrics.densityDpi / 160f);
        pieDataSet.setSelectionShift(px);  //點擊後延伸出來的長度

        PieData piedata = new PieData(xVals, pieDataSet);//生成PieData

        piechart.setData(piedata);//給PieChart填充數據
        piechart.getLegend().setPosition(Legend.LegendPosition.ABOVE_CHART_LEFT);
        piechart.getLegend().setForm(Legend.LegendForm.CIRCLE);//設置注解的位置和形狀
        piechart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {//設置值選擇時的Listener
            @Override
            public void onValueSelected(Entry entry, int i, Highlight highlight) {
                Toast.makeText(MainActivity.this, "Something selected value = " + entry.getVal(), Toast.LENGTH_SHORT).show();//單純地顯示一個Toast
            }
            @Override
            public void onNothingSelected() {
            }
        });

        piechart.setCenterText("收支明細");//中間寫的文字
        piechart.setCenterTextColor(Color.RED);//設置中間文字的顏色
        piechart.setCenterTextRadiusPercent(0.5f);//設置文字顯示的角度,180橫著,默認是豎著
        piechart.setCenterTextSize(12f);//設置中心文字的字體大小
        piechart.setCenterTextTypeface(null);//設置字體
        piechart.setDrawCenterText(true);//中心字使能開關,false時中間無法顯示文字

        piechart.setTransparentCircleAlpha(100);//透明圈的透明度,分3圈,一個是外面的值,然後是這個,然後就是下面的那個Hole
        piechart.setTransparentCircleColor(Color.RED); //設置顏色
        piechart.setTransparentCircleRadius(50f);//設置半徑

        piechart.setDrawHoleEnabled(true);//基本同上
        piechart.setHoleColor(Color.GREEN);
        piechart.setHoleRadius(30f);

        piechart.setDescription("No Deal");//設置描述文字
        piechart.setDescriptionTextSize(20.f);//設置描述文字的字體
        piechart.animateXY(1000, 1000);
    }
}

值選擇時的事件處理
上面的例子中其實已經有了

        piechart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {//設置值選擇時的Listener
            @Override
            public void onValueSelected(Entry entry, int i, Highlight highlight) {
                Toast.makeText(MainActivity.this, "Something selected value = " + entry.getVal(), Toast.LENGTH_SHORT).show();//單純地顯示一個Toast
            }
            @Override
            public void onNothingSelected() {
            }
        });

選中和啥都沒干的回調,利用這個回調我們可以做一些跳轉操作,比如從國家級報表,跳轉到省級,然後市級 and so on.

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved