ViewGroup中的多个视图或具有多个绘制元素的单个视图可以有效地创建千分表?

时间:2014-04-03 03:09:51

标签: android android-view viewgroup gauge

我想在Android中设计一个仪表视图,例如带旋转针的圆形温度计。

对于效率/速度,当新数据到达时,我想仅重新绘制视图中发生变化的部分(例如旋转针)。

我的初始测试类扩展了View,每次新数据到达时我都必须在onDraw()中重新绘制整个视图(移动和非移动元素)。

我找到了一个示例(http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/),建议将非移动组件绘制到Bitmap上。此位图使用canvas.drawBitmap在onDraw()中绘制。通过这种方式,您只需要在更改视图的非移动部分(例如,调整视图大小)时绘制单个非移动图形元素(重新生成位图)。

我对优化的想法不同。我想也许我的仪表应该扩展ViewGroup而不是View。然后在ViewGroup中,我可以为仪表的非移动和移动部分创建单独的视图。我会绘制一次非移动视图,并且永远不会强制它使invalidate()。然后我将移动的针作为单独的视图绘制(在ViewGroup中对齐,使其覆盖非移动视图),当新数据到达时,我可以使其无效(),因此将重新绘制。我错过了一些让这件事变得糟糕的事情吗?

例如,我的假设是不正确的,因为同一ViewGroup中的重叠旋转针视图被更改,不需要重新绘制非移动背景视图(即调用其onDraw)?或者,由于视图重叠,是否有针查看更改强制同一ViewGroup中的背景视图也重新绘制?

非常感谢。

0 个答案:

没有答案
相关问题