@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (points.size() > 1) { paint.setStrokeWidth(lineWidth); paint.setStyle(Paint.Style.STROKE); paint.setColor(lineColor); canvas.drawLine( points.get(0).getBasicX(), points.get(0).getBasicY(), points.get(points.size() - 1).getBasicX(), points.get(points.size() - 1).getBasicY(), paint ); } for (RouteViewPoint p : points) { if (isDrawCircle()) drawCircle(canvas, p, paint); if (isDrawIndex()) drawIndex(canvas, p, textPaint); if (isDrawLabel()) drawLabel(canvas, p, 10, textPaint); if (isDrawTransit()) drawTransit(canvas, p, 10, textPaint); if (isDrawCursor()) drawCursor(canvas, p, 10, textPaint); } }
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int offsetY = getPaddingTop(); int startX = (int) (getPaddingLeft() + 10 + getMaxRadius() + 0.5f); if (isDrawTransit()) startX = startX + getMaxTransitWidth(); if (points.size() > 1) { for (int i = 0; i < points.size(); i++) { RouteViewPoint p = points.get(i); if (i == 0) offsetY += p.getRadius(); if (i > 0) offsetY += p.getDistance(); p.setBasicX(startX); p.setBasicY(offsetY); if (i == points.size() - 1) offsetY += p.getRadius(); } } else if (points.size() == 1) { RouteViewPoint p = points.get(0); offsetY += p.getRadius(); p.setBasicY(offsetY); offsetY += p.getRadius(); } offsetY += getPaddingBottom(); heightMeasureSpec = MeasureSpec.makeMeasureSpec(offsetY, MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightMeasureSpec); }