1. 程式人生 > >安卓圖表hellochart

安卓圖表hellochart

效果圖:

這裡寫圖片描述

1、餅狀圖相對於前2種圖更加簡單,因為沒有X、Y軸的定義,程式碼量非常少,同時支援無限旋轉輪盤

1.1、


import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

import lecho.lib.hellocharts.listener.PieChartOnValueSelectListener;
import
lecho.lib.hellocharts.model.PieChartData; import lecho.lib.hellocharts.model.SliceValue; import lecho.lib.hellocharts.view.PieChartView; public class MainActivity extends AppCompatActivity { private PieChartView pieChart; private TextView text, text1; @Override protected void onCreate
(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pieChart = (PieChartView) this.findViewById(R.id.pie_chart); text = (TextView) this.findViewById(R.id.chart_text); text1 = (TextView) this.findViewById(R.id.chart_text1); setPieChartData(); } /** * 獲取資料 */
private void setPieChartData() { List<SliceValue> values = new ArrayList<>(); //顏色list final List<Integer> colorData = new ArrayList<>(); //標籤資訊 final List<String> titleData = new ArrayList<>(); //10種顏色 colorData.add(Color.parseColor("#85B74F")); colorData.add(Color.parseColor("#009BDB")); colorData.add(Color.parseColor("#FF0000")); colorData.add(Color.parseColor("#9569F8")); colorData.add(Color.parseColor("#F87C67")); colorData.add(Color.parseColor("#F1DA3D")); colorData.add(Color.parseColor("#87EA39")); colorData.add(Color.parseColor("#48AEFA")); colorData.add(Color.parseColor("#4E5052")); colorData.add(Color.parseColor("#D36458")); //10中標籤 titleData.add("華為 Mate 10"); titleData.add("榮耀6X"); titleData.add("一加5T"); titleData.add("華為Mate 10 Pro"); titleData.add("魅族note6"); titleData.add("360N6S"); titleData.add("三星GALAXY Note 8"); titleData.add("蘋果iPhone X"); titleData.add("vivo X20"); titleData.add("OPPO R11s"); //10種模組,資料100隨機數 for (int i = 0; i < colorData.size(); i++) { //注意資料list大一定要對應顏色值大小否者越界 SliceValue sliceValue = new SliceValue((float) (100 * Math.random()), colorData.get(i)); values.add(sliceValue); } final PieChartData pieChardata = new PieChartData(); //顯示標籤資訊 pieChardata.setHasLabels(true); //true:只有點選對應的模組才顯示標籤資訊 false:全部展示出來 pieChardata.setHasLabelsOnlyForSelected(false); //true:佔的百分比否顯示在餅圖外面 false:顯示在模組的中間 pieChardata.setHasLabelsOutside(true); //true:環形顯示 false:圓形顯示 pieChardata.setHasCenterCircle(true); //設定每個模板之間的間隙 pieChardata.setSlicesSpacing(5); //只有設定樣式為圓環才能有效設定文字 (在assets目錄下新建fonts目錄,把ttf字型檔案放到這) //Typeface tf = Typeface.createFromAsset(getAssets(), "你的字型資原始檔路徑"); //pieChardata.setCenterText1Typeface(tf); //填充資料 注意不能放在最後 否則就只顯示條 pieChardata.setValues(values); //設定中間環形的顏色 只有setHasCenterCircle(true)為環形時配合使用 這裡我的模式為圓形故不用 pieChardata.setCenterCircleColor(Color.WHITE); //設定環形的大小級別 也是配合setHasCenterCircle(true)使用 pieChardata.setCenterCircleScale(0.3f); //將引數設定到控制元件上 pieChart.setPieChartData(pieChardata); //true:點選選中模組變大 false:只有手指按住模板時才變大,手指離開恢復原狀 pieChart.setValueSelectionEnabled(true); pieChart.setAlpha(0.9f);//設定透明度 //設定餅圖大小 值越大圖越大 1是與父控制元件相等(如果設定便籤資訊在餅圖外面建議設定0.9f 否則會出現展示不全) pieChart.setCircleFillRatio(0.9f); //點選事件 (只有設定樣式為圓環才能有效) pieChart.setOnValueTouchListener(new PieChartOnValueSelectListener() { @Override public void onValueSelected(int i, SliceValue sliceValue) { /** *字型大小(查看了原始碼 text1:預設為42 text2:預設16 無論怎麼修改字型都不能改變原因未知_(:з」∠)_) * 同時註釋Text1引數設定text2也不能顯示出來... * 建議另寫TextView 賦值上去 */ //設定上面文字顯示內容 //pieChardata.setCenterText1(titleData.get(i)); //設定顏色 //pieChardata.setCenterText1Color(colorData.get(i)); //字型大小(無用) //pieChardata.setCenterText1FontSize(42); //pieChardata.setCenterText2(String.valueOf(sliceValue.getValue())); //pieChardata.setCenterText2Color(colorData.get(i)); //pieChardata.setCenterText2FontSize(16); //自建文字賦值上去 text.setText(titleData.get(i)); text1.setText(sliceValue.getValue() + ""); } @Override public void onValueDeselected() { } }); } }

1.2、

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff"
    android:orientation="vertical">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <lecho.lib.hellocharts.view.PieChartView
            android:id="@+id/pie_chart"
            android:layout_width="match_parent"
            android:layout_height="400dp" />

        <TextView
            android:id="@+id/chart_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/chart_text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:maxLength="5"
            android:paddingTop="50dp"
            android:textSize="18sp" />


    </RelativeLayout>
</LinearLayout>