Nine-Patch Drawable vs Shape Drawable。哪个应该是首选?

时间:2012-06-12 13:58:39

标签: android

我和我的同事并行开发了两个应用程序,每个应用程序具有相似的样式。这些应用程序的主视图背景是径向渐变。他实现了他的九个补丁图像,我做了一个形状drawable。两者都会产生类似且可接受的结果。

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

Shape Drawable:

<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>

Nine Patch:

enter image description here

3 个答案:

答案 0 :(得分:3)

Shape drawable非常适用于具有简单恒定颜色变化的渐变类图像。 另一方面,9-patch图像非常适合具有大量细节的图像,在拉伸区域中具有恒定的颜色。

答案 1 :(得分:1)

刚刚碰到这个问题。

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

答案 2 :(得分:0)

看看@Ivan Bartsov给出的答案。但是通过仔细的代码分析,他得出结论,对于大多数一般情况,使用9补丁需要较少的进程使用比生成的渐变更少的内存。因此,对于大多数情况,最好使用9个补丁。

查看他对模式详细信息的回答:What should i use for better performance, nine-patch or drawable xml resource?