Как нарисовать лог-график

Я хочу установить данные включения / выключения дежурства и времени отдыха в графике журнала, например:

Как нарисовать лог-график

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

Как нарисовать лог-график

вы можете использовать MChart github.com/PhilJay/MPAndroidChart

Rasoul Miri 17.10.2018 08:39
1
1
50
1

Ответы 1

вы можете рисовать на холсте в пользовательском представлении, расширенном из представления

Джава: void drawCanvas (Canvas canvas) {

    Paint paint;

    RectF bezierRect = new RectF(30.5f, 23.5f, 213.5f, 92.5f);
    Path bezierPath = new Path();
    bezierPath.moveTo(30.5f, 32.5f);
    bezierPath.lineTo(85.5f, 32.5f);
    bezierPath.lineTo(85.5f, 70.5f);
    bezierPath.lineTo(146.5f, 70.5f);
    bezierPath.lineTo(146.5f, 46.5f);
    bezierPath.lineTo(173.5f, 46.5f);
    bezierPath.lineTo(173.5f, 82.5f);
    bezierPath.lineTo(199.5f, 82.5f);
    bezierPath.lineTo(199.5f, 23.5f);
    bezierPath.lineTo(213.5f, 23.5f);
    bezierPath.lineTo(213.5f, 92.5f);

    paint = new Paint();
    paint.setStrokeWidth(1f);
    paint.setStrokeMiter(10f);
    canvas.save();
    paint.setStyle(Paint.Style.STROKE);
    paint.setColor(Color.BLACK);
    canvas.drawPath(bezierPath, paint);
    canvas.restore();
}

Котлин:

fun drawCanvas(canvas: Canvas) {

        val paint: Paint

        val bezierRect = RectF(30.5f, 23.5f, 213.5f, 92.5f)
        val bezierPath = Path()
        bezierPath.moveTo(30.5f, 32.5f)
        bezierPath.lineTo(85.5f, 32.5f)
        bezierPath.lineTo(85.5f, 70.5f)
        bezierPath.lineTo(146.5f, 70.5f)
        bezierPath.lineTo(146.5f, 46.5f)
        bezierPath.lineTo(173.5f, 46.5f)
        bezierPath.lineTo(173.5f, 82.5f)
        bezierPath.lineTo(199.5f, 82.5f)
        bezierPath.lineTo(199.5f, 23.5f)
        bezierPath.lineTo(213.5f, 23.5f)
        bezierPath.lineTo(213.5f, 92.5f)

        paint = Paint()
        paint.setStrokeWidth(1f)
        paint.setStrokeMiter(10f)
        canvas.save()
        paint.setStyle(Paint.Style.STROKE)
        paint.setColor(Color.BLACK)
        canvas.drawPath(bezierPath, paint)
        canvas.restore()
}

Другие вопросы по теме