1

我对 aChartEngine 有疑问。我试图在主屏幕小部件中显示图形。到目前为止没有成功,问题是当我将位图放入容器时,它会缩小而不是拉伸以匹配容器宽度。我看到有数据正在更新,但就像这张图片一样:

在此处输入图像描述

图像上是容器和图形加载的位图部分填充。

当这个图表像这样添加(到活动中)时,没有问题:

GraphicalView graph = ChartFactory.getTimeChartView(context, getDataSet(dates, values, seriesTitle), getRenderer(context, lblAxisY), "HH:mm");
graphLayout.removeAllViews();
graphLayout.addView(graph, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));

当我将图形转换为位图并返回时,这是错误的:

float dpi = AndroidResolution.getScreenDpi(context);
        GraphicalView graph = ChartFactory.getTimeChartView(context, getDataSet(dates, values, seriesTitle), getRendererWidget(context,
                lblAxisY), "HH:mm");

        graph.setDrawingCacheEnabled(true);
        graph.layout((int) (0 * dpi), (int) (0 * dpi), (int) (100 * dpi), (int) (100 * dpi));
        graph.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
        graph.buildDrawingCache();
        graph.getDrawingCache();

        Bitmap bmp = Bitmap.createBitmap((int) (100 * dpi), (int) (100 * dpi), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bmp);
        graph.draw(canvas);

        return bmp;

我尝试了各种布局和位图大小的值,但我总是得到一些扭曲和缩小的东西。我无法获得视图宽度和高度,因为它是远程视图。

接收 bmp 的方法:

remoteView.setImageViewBitmap(R.id.imgRecentDetails, AndroidPlot.generateTimePlot(context, values, dates,"VALUES", "AXIS Y")));

渲染器代码:

XYMultipleSeriesRenderer returningRenderer = new XYMultipleSeriesRenderer();
    returningRenderer.setApplyBackgroundColor(true);
    returningRenderer.setBackgroundColor(Color.argb(0, 0, 255, 0));
    returningRenderer.setMarginsColor(Color.argb(0, 0, 255, 0));
    returningRenderer.setGridColor(Color.argb(119, 128, 128, 128));
    returningRenderer.setShowGrid(true);
    returningRenderer.setShowLegend(false);
    returningRenderer.setAxisTitleTextSize(dpi * 3);
    returningRenderer.setChartTitleTextSize(dpi * 3);
    returningRenderer.setYLabels(5);
    returningRenderer.setXLabels(3);
    returningRenderer.setYTitle(lblAxisY);
    returningRenderer.setAntialiasing(true);
    returningRenderer.setYAxisMax(100);
    returningRenderer.setYAxisMin(0);
    returningRenderer.setYLabelsAlign(Align.RIGHT, 0);
    returningRenderer.setYLabelsColor(0, Color.WHITE);
    returningRenderer.setXLabelsColor(Color.WHITE);
    returningRenderer.setZoomEnabled(false);
    returningRenderer.setInScroll(true);
    returningRenderer.setPanLimits(new double[] { 0, 1000, 0, 0 });
    returningRenderer.setPanEnabled(true, false);
    XYSeriesRenderer renderer = new XYSeriesRenderer();
    renderer.setPointStyle(PointStyle.POINT);
    renderer.setColor(Color.WHITE);
    renderer.setFillBelowLine(true);
    renderer.setFillBelowLineColor(Color.argb(255, 23, 123, 189));
    returningRenderer.addSeriesRenderer(renderer);
    return returningRenderer;

非常欢迎任何见解或解决方案。

更新:我也在常规活动中尝试过它,它也在容器的左上角缩小(使用了 graph.toBitmap())。

4

1 回答 1

1

尝试使用returningRenderer.setInScroll(false).

于 2012-11-20T17:47:23.937 回答