如何在Android中像Wifi Analyzer App一样绘制图形?

时间:2012-06-19 13:09:59

标签: android android-layout graphics canvas

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

所以我的问题是:

  

如何显示不同相邻单元格的图形   X轴和Y轴上的信号强度是实时的吗?一个例子   here

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

3 个答案:

答案 0 :(得分:12)

使用Canvas手动绘制自己的图形,您可以使用图表引擎库,这样做也会更容易。

AchartEngineChartDroidaFreeChartMPAndroidChart

对于3D图表Charts4J

  

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

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

答案 1 :(得分: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 (Canvas canvas)

答案 2 :(得分:1)

我建议您使用AChartEngine而不是绘制画布。 您可以下载库,javadocs和演示应用程序here

有关使用AChartEngine入门的youtube教程。

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