2012-06-12 22 views
10

我的同事和我同时开发了两个应用程序,每个应用程序都有相似的样式。这些应用程序的主视图背景是一个径向渐变。他实现了他作为一个九贴片图像,我做了一个可绘制的形状。两者都产生相似和可接受的结果九片可绘制与可绘制的形状。哪个应该是首选?

所以我的问题是,我们应该使用哪一个?内存消耗与性能之间是否存在折衷?我想像图像可能需要一些时间来加载,但可绘制的形状需要更多时间来绘制(由于计算)。然后这些存储在缓存中,这些处罚仅在第一次显示时发生,或者这些问题正在进行中?

形状绘制对象:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <gradient 
     android:startColor="#003472" 
     android:endColor="#000034" 
     android:gradientRadius="350" 
     android:type="radial"/> 
</shape> 

九补丁:

enter image description here

回答

3

形状绘制是伟大的梯度那种简单的恒定颜色变化的图像。另一方面,对于具有许多细节的图像而言,9色块图像非常适合,在延伸区域中颜色不变。

+0

这是很好的标准,结果的质量。然而,在我们的例子中,性能和内存消耗又如何?例如,图像大约是30K。如果我们使用它作为几个Activies的背景,它会消耗比可绘制形状更多的内存吗? – jsmith

+0

@jsmith表现:10-20毫秒不应该是一个问题,所以我会说没有区别。内存消耗:因为两者都是在运行时重建的,所消耗的内存也应该相同。 (考虑到两者都将是位于末尾的给定大小的位图数据) –

1

刚刚碰到这个问题。

不要在XML中使用形状,如果你有涉及它的动画。原因在于缓存(特别是如果你使用硬件加速)会使它看起来真的很“滞后”,因为屏幕不会经常刷新。

+2

你能再解释一下什么意思是“......涉及它”吗?你的意思是,当XML形状正在移动时?或者是其他东西? –