如何将我自己生成的代码添加到我的android项目中(在Android Studio中)

时间:2014-11-26 17:25:15

标签: android android-studio android-gradle

我有一个模式,我最近在我的应用程序中使用了很多,以便将Enum值映射到某些资源。因此,我可以简单地询问" MyStateEnum.ACTIVE"的主要文本颜色,而不是在我的代码中使用开关。或者其他一些。

现在我将某个枚举的全名(com.example.app.MyStateEnum.ACTIVE)转换为资源名称(com_example_app_mystateenum_active)并附加" name"我想要的东西(primary_text_color)然后通过getResources().getIdentifier(enumName+"_"+thingName, "color", getPackageName())运行它给我一个我需要获取我想要的资源的ID。

然而getIdentifier()与使用R.color.com_example_app_mystateenum_active_primary_text_color相比较慢,所以我想找到更好的方法。

我认为更好的方法是以与生成R相同的方式生成代码 ,以便我可以更轻松地访问ID。我认为这样的事情会奏效:

colors.xml:

<color name="some_name" 
   ex:use="primary_text_color"
   ex:value="com.example.app.MyStateEnum.ACTIVE">#FF00FF</color>
<color name="some_name_default"
   ex:use="primary_text_color">#FF0000</color>

something.java

int activeColor = getResources().getColor(X.color.primary_text_color.getForEnum(MyStateEnum.ACTIVE)); //#FF00FF
int activeColor = getResources().getColor(X.color.primary_text_color.getForEnum(MyStateEnum.INACTIVE)); //#FF0000

(我讨厌挑选名字,但你明白了)。我会喜欢让这些值自动更新,如同R一样。

我的问题是,我很难找到任何建议我应该从哪里开始。我不确定这是不是问你错误的问题&#34;或者&#34;之前没有人想要这样做,所以开始阅读android插件的源代码&#34;。

0 个答案:

没有答案