没有预定义大小的动态绘制静态图像的最佳方法

时间:2013-02-27 02:37:41

标签: android

我正在编写一个应用程序,如果用户选择了一个选项,则需要渲染图像。图像将读取数据文件,并根据数据文件的内容呈现适当数量的矩形,线条和文本(我可视化数据)。我读了这个网站Drawables or Canavs,如果我理解正确,它说我应该使用drawables。但我不明白(没有找到或错过它)是我定义绘制形状的空间的地方。因为我不知道形状的数量,因此我不知道整个可视化的大小,直到我读取数据文件,我不知道我需要多大的合成图像(渲染所有形状和线条所需的大小)。

所以我有三个问题。

我应该使用drawables来完成我需要做的事情吗? mDrawable.setBounds方法是否定义了我正在使用的可视化的“大小” 我可以绘制线条并使用drawables插入文本吗?

1 个答案:

答案 0 :(得分:0)

要显示Drawable,您将使用ImageView将源设置为drawable,或将其他背景设置为drawable的其他UI组件,或覆盖您自己的自定义UI视图的onDraw方法并使用Drawable #draw(Canvas)调用将Drawable绘制到画布上,从而使用该画布绘制自己的视图。 Drawable#setBounds方法定义了Drawable#draw方法绘制到画布上的位置。

通常,在您的情况下,Drawable根本不会被使用。相反,您只需将View子类化,覆盖onDraw(Canvas),并直接在Canvas对象上进行绘图调用。这个对象有drawBitmap,drawLines,drawText等方法:
http://developer.android.com/reference/android/graphics/Canvas.html#drawText(java.lang.String,%20float,%20float,%20android.graphics.Paint)