Android - 使用Android绘图渲染批量点的问题

时间:2017-01-10 15:51:48

标签: android graph rendering yuv androidplot

我正在努力要求将原始YUV图像(1280 x 720)的亮度值显示为图形。也就是说,我将Y数据分开并以图形的形式显示,其中x轴是宽度,y轴是相应的Y值。

//代码

            int count = 0;
            int byteValue = 0;
            for ( y = 0; y < height; y++) {
                for (x = 0; x < width; x++) {
                    byteValue = pPictureIn[count++] & 0xff;
                        series.addLast(x, byteValue);
                }
            }

            final PlotStatistics stats = new PlotStatistics(10, false);

            plot.addListener(stats);

            redrawer = new Redrawer(Arrays.asList(new Plot[]{plot}),
            1, false);

            format = new LineAndPointFormatter(this, R.xml.formatter);

            plot.addSeries(series, format);
            redrawer.start();

我正在使用AndroidPlot绘制图表。我正在为系列添加所有要点。我的问题是,如果我尝试渲染点数,我的应用程序会被冻结。我使用渲染模式作为USE_BACKGROUND_THREAD。

有人请帮助我一次性渲染点数而不冻结。提前致谢

1 个答案:

答案 0 :(得分:0)

我猜你正在使用SimpleXYSeries,它没有针对效率或速度进行优化;随着点数的增加,对addLast的调用变得非常昂贵。使用固定内存XYSeries实现将提供更好的性能。如果您的图像数据是动态的(来自相机或其他图像流),那么环形缓冲区可能是一个很好的设计考虑......我建议特别考虑FixedSizeEditableXYSeries

此外,您可以考虑使用SampledXYSeries对数据进行抽样以缩小尺寸。

Advanced XY Series Types doc有更多关于上述课程和其他课程的利弊的详细信息。