/** * 绘制数据区网络 * * @param canvas 画布 */ private void renderDataArea(Canvas canvas) { float cirX = plotArea.getCenterX(); float cirY = plotArea.getCenterY(); for (RadarData lineData : mDataSet) { // 画各自的网 List<Double> dataset = lineData.getLinePoint(); int dataSize = dataset.size(); if (dataSize < 3) { Log.e(TAG, "这几个数据可不够,最少三个起步."); continue; } Float[] arrayDataX = new Float[dataSize]; Float[] arrayDataY = new Float[dataSize]; int i = 0; for (Double data : dataset) { Double per = (data - dataAxis.getAxisMin()) / dataAxis.getAxisRange(); float curRadius = (float) (getRadius() * per); // 计算位置 MathHelper.getInstance().calcArcEndPointXY(cirX, cirY, curRadius, mArrayLabelAgent[i]); // 依Path还是Line来决定画线风格 arrayDataX[i] = MathHelper.getInstance().getPosX(); arrayDataY[i] = MathHelper.getInstance().getPosY(); i++; // 标签 } // 画线或填充 switch (lineData.getAreaStyle()) { case FILL: drawDataPath(canvas, lineData, arrayDataX, arrayDataY); break; case STROKE: renderDataLine(canvas, lineData, arrayDataX, arrayDataY); break; default: Log.e(TAG, "这类型不认识."); } } }