在 Android 个图块上创建图形

Creating Graphics on Android Tiles

我正在创建一个 Android Tile 用于显示自定义和动态创建的图形,即图表。

但是,由于一些限制,我还没有找到这样做的方法。 Tiles 的工作方式似乎与 Activity 根本不同,Tiles 的 API 只允许创建几个预定义的 UI 元素。对我来说唯一可用的似乎是 Image LayoutElement.

可以通过传递资源或字节数组来创建图像。在处理动态创建的图形时,前者是不可能的。

因此,我唯一的希望(我认为)是自己创建一个 ByteArray 形式的图像。 我怎样才能做到这一点?有没有Java直接画图的框架?

我考虑了以下几点:

事实证明我错了:您可以很好地在 Tile 中使用 Canvas。然而,将其转换为资源有点棘手,所以这里有一些代码:

final Bitmap bitmap = Bitmap.createBitmap(chart.getWidth(), chart.getHeight(),
        Bitmap.Config.RGB_565);
final Canvas canvas = new Canvas(bitmap);
// Sets the background color
final Color background = Color.valueOf(chart.getBackgroundColor());
canvas.drawRGB(
        Math.round(background.red() * 255),
        Math.round(background.green() * 255),
        Math.round(background.blue() * 255)
);

// YOUR DRAWING OPERATIONS: e.g. canvas.drawRect

final ByteBuffer byteBuffer = ByteBuffer.allocate(bitmap.getByteCount());
bitmap.copyPixelsToBuffer(byteBuffer);
final byte[] bytes = byteBuffer.array();

return new ResourceBuilders.ImageResource.Builder()
        .setInlineResource(
                new ResourceBuilders.InlineImageResource.Builder()
                        .setData(bytes)
                        .setWidthPx(chart.getWidth())
                        .setHeightPx(chart.getHeight())
                        .setFormat(ResourceBuilders.IMAGE_FORMAT_RGB_565)
                        .build()
        )
        .build();