Android в режиме реального времени график настройки пользовательского сенсорного экрана - PullRequest
2 голосов
/ 07 июля 2011

Существует ли какая-либо графическая библиотека для Android, которая позволила бы мне нарисовать линию с регулируемым количеством сегментов, которые можно трогать и перетаскивать в реальном времени?В настоящее время у меня есть работающее приложение, использующее androidplot, которое захватывает изображение того, что я сканирую, и графически отображает эти данные.Мне нужен настраиваемый отрезок под графиком, чтобы пользователь мог выбрать область, которая будет интегрирована между кривыми, собранными из данных и настраиваемой линией.

Я не смог найти ничего в androidplot, которое могло бы позволить мнесделайте это, я в порядке с переключением графических библиотек, если это то, что нужно.

1 Ответ

3 голосов
/ 07 июля 2011

Попробуйте заглянуть в Path. Это, вероятно, самый простой класс для использования.

class Graph extends View {
    Graph(Context context) {
        super(context);
        // ... Init paints
    }

    @Override public void onDraw(Canvas canvas) {
        canvas.save(MATRIX_SAVE_FLAG);

        // Draw Y-axis
        canvas.drawLine(axisOffset, axisOffset, axisOffset, canvasHeight-axisOffset, paint);
        // Draw X-axis
        canvas.drawLine(axisOffset, canvasHeight-axisOffset, canvasWidth-axisOffset, canvasHeight-axisOffset, paint);
        canvas.drawPath(new RectF(0.0f, 0.0f, 1.0f, 1.0f), mPath, paint);
        canvas.restore();
    }

    Path mPath = new Path(); // your open path
    float canvasWidth = 1.0f;
    float canvasHeight= 1.0f;
    float axisOffset = 0.1f; // The offset from the border of the canvas

    public void registerDataPlot(int xCoord, int yCoord) {
        // You need to convert the plot data to a location on the canvas
        // Just find the percent value from the base of the axis
        float x = xCoord / (canvasWidth - (2*axisOffset));
        float y = yCoord / (canvasHeight - (2*axisOffset));
        mPath.lineTo(x, y);
    }
...