2011-05-24 20 views
2

这听起来很愚蠢,但我可以想到赞成和反对的理由。Android重构 - 最佳实践 - 可绘制的形状和colors.xml

我是否应该将我的drawable/shape.xml渐变的两种颜色重构为colors.xml?

<?xml version="1.0" encoding="utf-8"?> 

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="#FFFFFF" 
     android:endColor="#CCCCCC" 
     android:angle="270" /> 
    <stroke 
     android:width="3dp" 
     color="@color/transparent" /> 
    <corners 
     android:radius="13dp" /> 
    <padding 
     android:left="10dp" 
     android:top="10dp" 
     android:right="10dp" 
     android:bottom="10dp" /> 
</shape> 

保持它在drawable/shape.xml中显示它是一个实体(一个按钮)并允许它在一个地方保持安全。 将它移动到colors.xml允许这些颜色与其他资源共享,也许如果我创建的主题或风格?但是当看到colors.xml时,我怎么会知道它们结合起来形成渐变色?

有没有人有意见,我希望我已经添加了足够的我的虽然过程引发一些辩论。

我试着看着为IO Sched应​​用程序:linky看看Google员工做了什么,但我找不到他们创建任何形状。

回答

1

我想说,一般来说,你应该提取颜色资源,但一定要从逻辑上命名它们。

例如,如果您有类似accent_color_1accent_color_1_darker的东西,则应该假定应用中使用的这两种颜色之间可能存在颜色渐变。但是,对于您从accent_color_1accent_color_2之类的颜色进行颜色渐变的意义不大。

尽管如此,这实际上只是个人或团队偏好问题。

+1

谢谢,清除它。这在命名约定中更多。试图为一种颜色获得一个不错的名字,而不是一般的或特定的。将工作在它上面! – Blundell 2011-05-24 17:57:32

1

我更喜欢定义单独的xml文件中的所有颜色。

除了能够在其他资源中使用它们,您可以给每种颜色名称,它描述了它的用途。所以当你看着你的形状代码时,你会阅读一些有意义的东西,而不是一些神秘的十六进制字符。

如果您可以确保您将在一个地方使用该特定颜色,我想这只是一个品味问题。