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


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

所以我的问题是:

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

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


5972
2018-06-19 13:09


起源

你的问题究竟是什么?它是否与相邻的细胞相比有所增强,或者是你的问题显示它?如果您已有数据,则可以将其绘制在Canvas上 - Cruceo
请你发表评论。我希望得到相对于邻近的力量,然后显示它。我已经有了数据,所以问题是如何在画布上绘制它,就像你说的那样! - 13KZ
如果您之前从未使用过Canvas,那么这是一个很好的起点: tutorialforandroid.com/2009/06/...   - 如果你已经掌握了数据,只需循环绘制它们并绘制它们(圆圈,通过它们的线条等) - Cruceo


答案:


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

喜欢 AchartEngineChartDroidaFreeChartMPAndroidChart

对于3D图表 Charts4J

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

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


12
2018-06-22 05:17



我想补充一下 aFreeChart,这是jFreeChart的一个端口,列表。 - Ivin
你是来吧,谢谢@Ivin - MKJParekh
我推荐aChartEngine。 - Piyush Patel
谁能告诉我这些库中是否包含任何与Bell Curves图相关的东西?我找不到一个。 - Ahmed
我的选择是 MPAndroidChart。它还包括一个实时示例,并允许Android和iOS之间的跨平台开发。 - gus27


我不知道您要开发哪种类型的图表,因为您的链接有不同的类型。但是我在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的计算。 points数组是您的值将被写入的数组。

但要注意,在android线条中用双线绘制,我知道没有“点”结构。

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

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

postInvalidate() onDraw(帆布帆布)


1
2018-06-28 00:29





我建议你使用AChartEngine而不是画画。 您可以下载库,javadocs和演示应用程序 这里

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

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


1
2018-06-29 10:51