Day/Night theme for android app

android, android-theme

Solution

Actually it seems you can use themes to describe custom drawables as well. Take a look at: How to switch between night-mode and day-mode themes on Android?. You create your themes by using a style block and then in your xml layout you specify something in your theme by using ?attr. Then you should be able to call setTheme(R.styles.DAY_THEME) on the next activity and everything should be updated.

Problem

I have an app in which I need to implement day / night theme. Unfortunately there is no simple way of making theming by just using styles, I need to be able to update: layout backgrounds, button selectors, text color, text size, images, icons, animations. From what I see I have 2 options: Have different xml layout files for night/day, so something like `home_day.xml` / `home_night.xml`. There are around 30 screens in the app, so in the end there will be 60 xml layouts. On activity/fragment onCreate, based on current hour I could `setContentView`. This adds some more xml files but avoids adding more code in activities Have only one layout for day/night and on activity's `onCreate` findviewById for each item I want to theme and update his attributes based on current day/night. This could generate a lot of extra code, findviews and apply attributes for many views. I am aiming for for 2. but I am open to any suggestions from you. So, what would you choose and why ?

Original source

Related problems