兄弟们 废话不多说,直接上代码了:
package com.zz.kotlintest.view; import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PathMeasure; import android.graphics.Point; import android.graphics.RectF; import android.graphics.Typeface; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import com.zz.kotlintest.R; import java.util.ArrayList; import java.util.List; /** * @Author xifangzheng 席方正 * Created by zz on 2017/9/26 10:02. * class explain: 圆形分布统计图 * update: upAuthor: explain: */ public class RingView extends View { private Context mContext; private Paint mPaint; private int mPaintWidth = 0; // 画笔的宽 private int topMargin = 30; // 上边距 private int leftMargin = 80; // 左边距 private Resources mRes; private DisplayMetrics dm; private int showRateSize = 10; // 展示文字的大小 private int circleCenterX = 96; // 圆心点X 要与外圆半径相等 private int circleCenterY = 96; // 圆心点Y 要与外圆半径相等 private int ringOuterRidus = 96; // 外圆的半径 private int ringInnerRidus = 33; // 内圆的半径 private int ringPointRidus = 80; // 点所在圆的半径 private float rate = 0.4f; //点的外延距离 与 点所在圆半径的长度比率 private float extendLineWidth = 20; //点外延后 折的横线的长度 private RectF rectF; // 外圆所在的矩形 private RectF rectFPoint; // 点所在的矩形 private List<Integer> colorList; private List<Float> rateList; private boolean isRing; private boolean