Android重构-最佳实践-可绘制shape和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应​​用程序的Source:链接以查看Google Employee的工作,但找不到它们创建任何形状。     

解决方法

我想说,一般来说,您应该提取颜色资源,但是请确保按逻辑命名。 例如,如果您有诸如
accent_color_1
accent_color_1_darker
之类的内容,则应假定应用中使用的这两种颜色之间可能存在色带变化。但是,从
accent_color_1
accent_color_2
之类的颜色进行渐变会变得没有意义。 不过,归根结底,这实际上只是个人或团队偏好的问题。     ,我更喜欢在单独的xml文件中定义所有颜色。 除了可以在其他资源中使用它们之外,您还可以为每种颜色命名,以描述其用途。因此,当您查看形状代码时,您将读到有意义的内容,而不是一些奥秘的十六进制字符。 如果您可以确保只在一个地方使用该特定颜色,那么我想这只是一种口味问题。