簡單死資料餅圖
阿新 • • 發佈:2018-12-18
效果圖:
CustomPiechartView繼承View
package com.example.piechart.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.View; public class CustomPiechartView extends View { /** * 記錄傳入的角度 * @param context */ float[] mAngles; /** * 位置控制 * @param context */ RectF mRectF; /** * 畫筆 * @param context */ Paint mPaint; /** * 起始角度 * @param context */ float mStartAngles=0; public CustomPiechartView(Context context) { super(context); init(); } public CustomPiechartView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } /** * 設定每個扇形的角度 * @param angles 角度陣列 */ public void setData(float[] angles){ mAngles=angles; } private void init() { //初始化畫筆 mPaint=new Paint(); //設定畫筆顏色為藍色 mPaint.setColor(Color.BLUE); //設定寬度 mPaint.setStrokeWidth(20); //設定填充模式 mPaint.setStyle(Paint.Style.FILL); //設定上下左右位置 mRectF=new RectF(); mRectF.top=100; mRectF.bottom=400; mRectF.right=550; mRectF.left=150; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); for (int i=0;i<mAngles.length;i++){ if (i%2==0){ mPaint.setColor(Color.BLACK); }else { mPaint.setColor(Color.YELLOW); } //畫扇形 //第一個引數,位置資訊 //第二個引數,起始角度 //第三個引數,從起始角度開始,順時針旋轉角度 //第四個引數,是否延申到圓心 //第五個引數,畫筆 canvas.drawArc(mRectF,mStartAngles,mAngles[i],true,mPaint); //下一個扇形的起始角度 = 本次扇形起始角度 + 本次扇形旋轉角度 mStartAngles += mAngles[i]; } } }
MainActivity
package com.example.piechart; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.example.piechart.view.CustomPiechartView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { float[] angles = new float[]{80, 60, 100, 50, 30, 40}; CustomPiechartView customBingView = findViewById(R.id.piechart); customBingView.setData(angles); customBingView.invalidate(); } }
佈局
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <com.example.piechart.view.CustomPiechartView android:id="@+id/piechart" android:layout_width="wrap_content" android:layout_height="300dp" /> </android.support.constraint.ConstraintLayout>