11

嗨,我正在尝试开发一个现场测试应用程序,我必须检索相邻单元格的信号强度等信息。

所以我的问题是:

如何实时显示 X 轴上不同相邻单元格和 Y 轴上信号强度的图表?这里有一个例子 。

我已经有 5 或 6 个相邻小区,每个小区都有他的信号强度。

4

3 回答 3

13

而不是使用 Canvas 手动绘制图表,您可以使用可用的图表引擎库,这也将更容易做到。

AchartEngine , ChartDroid , aFreeChart , MPAndroidChart

对于 3D 图表Charts4J

如何实时显示 X 轴上不同相邻单元格和 Y 轴上信号强度的图表?

我在我的一个应用程序中使用了同样的图表引擎。该库提供了一个完整的 API 演示,因此很容易理解如何使用它。

于 2012-06-22T05:17:53.880 回答
1

我不知道您要开发哪种类型的图表,因为您的链接上有不同的类型。但是我在android中开发了一个实时线图。我正在使用画布绘制线条。

public class GraphView extends View
{
    ...
    private final Rect rect = new Rect();
    private final Paint linePaint = new Paint();
    private final Paint backgroundPaint = new Paint();
    private float[] points;

    public GraphView(final Context context, final AttributeSet aSet)
    {
        super(context, aSet);
    }
    @Override
    protected void onDraw(final Canvas canvas)
    {
        if (points == null)
        {
            return;
        }
        canvas.drawLines(points, linePaint);
        rect.set((int) (xIndex * xScale), 0, (int) (xIndex * xScale + 5), getHeight());
        canvas.drawRect(rect, backgroundPaint);
    }
...
}

您可以根据需要轻松定位/调整矩形。xIndex 和 xScale 的计算我没有写。点数组是您的值将被写入的数组。

但请注意,在 android 中,线条是成对绘制的,据我所知,没有“点”结构。

我的意思是 [1, 0.25, 2, 0.45] 在 x1= 1, y1=0.25 和 x2=2, y2= 0.45 之间画一条线

您也可以通过 postInvalidate() 触发绘制

postInvalidate() onDraw(画布画布)

于 2012-06-28T00:29:18.467 回答
1

我建议你使用 AChartEngine 而不是画到画布上。您可以在此处下载库、javadocs 和演示应用程序。

youtube 上有关于 AChartEngine 入门的教程。

您可以使用图表下方区域填充颜色或未填充的折线图来复制您提供的第一个屏幕截图中的功能。

于 2012-06-29T10:51:45.940 回答