安卓圖表hellochart
阿新 • • 發佈:2019-02-07
效果圖:
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>