Создайте кольцевую диаграмму, похожую на Google Fit

Кто-нибудь знает, как создать кольцевую диаграмму, подобную той, что в Google Fit.

Google Fit Chart


person Chris D    schedule 26.03.2015    source источник
comment
Я нашел это: github.com/txusballesteros/fit-chart Надеюсь, это поможет кому-то с та же проблема.   -  person André Augusto Costa Santos    schedule 11.11.2015
comment
Если кому-то все еще нужна библиотека, которая делает это, вот некоторые из них: Для Java: - github.com/txusballesteros/ fit-chartgithub.com/PhilJay/MPAndroidChart Для Kotlin: — github.com/futuredapp/donut   -  person Brugui    schedule 08.01.2021


Ответы (2)


Я тоже этого хотел, но лучший ответ, который я смог найти, был «сделай сам». Так я и сделал.

Это довольно просто (я новичок в Android) и незакончено, но это должно дать вам представление.

По сути, вы просто настраиваете объекты рисования.

    paintPrimary = new Paint();
    paintPrimary.setAntiAlias(true);
    paintPrimary.setColor(colorPrimary);
    paintPrimary.setStyle(Paint.Style.STROKE);
    paintPrimary.setStrokeCap(Paint.Cap.ROUND);

и вызовите canvas.drawArc

class FitDoughnutView extends View {

    private RectF _oval;

    public FitDoughnutView(Context ctx) {
        super(ctx);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        canvas.drawArc(_oval, 0, 360, false, paintSecondary);

        canvas.drawArc(_oval, 270, percentDeg, false, paintPrimary);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        _oval = new RectF(width, width, w - width, h - width);
    }
}

Полный исходный код здесь: github.com/tehmantra/fitdoughnut

Чье-то руководство: hmkcode.com/android-canvas-how-to -draw-2d-пончик-диаграмма/

person Michael Wildman    schedule 13.05.2015

Я бы порекомендовал эту библиотеку, потому что она активно поддерживается и имеет множество опций.

В нем есть руководство по как использовать его в Kotlin, но вы также можете использовать его в Java следующим образом :

В вашем файле макета:

<app.futured.donut.DonutProgressView
        android:id="@+id/dpvChart"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_marginTop="8dp"
        app:donut_bgLineColor="@color/grey"
        app:donut_gapAngle="270"
        app:donut_gapWidth="20"
        app:donut_strokeWidth="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

Затем в вашей деятельности Java:

private DonutProgressView dpvChart;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);

    dpvChart = findViewById(R.id.dpvChart);

    DonutSection section = new DonutSection("Section 1 Name", Color.parseColor("#f44336"), 80.0f);
    dpvChart.setCap(100f);
    dpvChart.submitData(new ArrayList<>(Collections.singleton(section)));
}
person Brugui    schedule 07.01.2021