I am trying to change the look and feel of my Android app, on the fly. Something like, the app starts up and gets a set of values from the server. These values are the elements that typically go inside colors.xml. What I am looking for, is a way to dynamically change the elements inside the colors.xml and update it with these new values received from the server. My understanding is that normally, this cannot be done directly. But has anyone found a workaround?
What I want to avoid if possible :
I would like to avoid setting color values inside each activity’s onCreate() method for each element in that view. If at all possible, I would like to avoid this.
You can achive this change by newly introduce firebase remote config which provide remote config to change theme color or any other values necessary for app like promotion,updates etc
You can refer this Example
Unfortunately all color values (and other resources) inside the resources directory are hardcoded as static final ints. This means there is no way to change the values at runtime. You can however use one of the previously suggested solutions or have a look at this excellent explanation: https://stackoverflow.com/a/33992017/3662251
For a nice workaround that overrides the activity’s
getResources method and implements a custom
Resources class which is in my opinion the most seamless solution: https://stackoverflow.com/a/34178187/3662251
I have did that in my app getting Hex color code like #06FF67 from my server and stored in sharedpreferences – https://stackoverflow.com/a/23024962/4741746
And when need to set new value that coming from server just override same shared preferences value with new data and set to app
Or you can use Random Color genrater also –https://stackoverflow.com/a/5280929/4741746