[MTCD Software Development] herb77:
So here is the first version of the themeing tutorial. Themes are written in JSON and have the following layout.

{
[COLOR="Red"]"Theme"[/COLOR]: {
[COLOR="Red"]"Name"[/COLOR]: "[COLOR="SeaGreen"]Theme Name[/COLOR]",
[COLOR="red"] "Colors"[/COLOR]: [
{ [COLOR="red"]"Key"[/COLOR]: "[COLOR="SeaGreen"]Identifier[/COLOR]", [COLOR="red"]"Value"[/COLOR]: "[COLOR="SeaGreen"]Color[/COLOR]" },
],
[COLOR="red"] "Images":[/COLOR] [
{ [COLOR="red"]"Key"[/COLOR]: "[COLOR="seagreen"]Identifier[/COLOR]", [COLOR="red"]"Value"[/COLOR]: "[COLOR="seagreen"]Image[/COLOR]" }
]
}
}

There is always one "Theme" element, which may include three sub-elements:

"Name": You can enter a theme name of you choice here. Currently, it is not used, but this may change in a future release.

"Colors": This is an array of color definitions. A color definition has the following elements:

"Key": Icludes the identifier used to identify the UI item which is colored.

"Value": Icludes the color value. This can be a HTML color name or an ARGB hex value.

"Alpha": This is optional. Icludes the alpha value (transparency) as a hex numer. The value mus be from 0 to 255.

"Images": Contains an array of images. Currently only one image (Wallpaper is supported). An image item has the following format.

"Key": Icludes the identifier used to identify the UI item which is used with the image. Currently only "Wallpaper" is a valid value.

"Type": This value is optional from release 0.9.3. If it is "File", "Value" is interpreted as a path to a file. Else the "Value" has to be the image as Base64 data.

"Value": Path to the image or Base64 data of the image, depending on the "Type" value.

Valid values for Colors are:

[IMG="Color Descriptions"]https://xdaforums.com/attachment.php?attachmentid=4950611&d=1581719834[/IMG]

ColorAccent: Color of the lines at the top and bottom bar. The Default is red.

ColorSelected: Selected / Active color of station button frame, station page indicator, led on buttons. The default is red.

ColorNotSelected: Unselected / inactice color of the above. The default is dark red.

ColorBackground: Background color. Only visible if no wallpaper is used. The default is black.

ColorBackgroundLight: Background color of the top and bottom bar. The default is gray.

ColorStationButton: Background color of the station button when not selected. The default is white.

ColorStationButtonSelected: Background color of the station button when selected. The default is white.

I'll add mot values from time to time, to be more flexible with theming.

You can use an Android emulator (for example Genymotion) to develop and test themes. You can install GMRadio in the emulator (it starts, of course it has no function) then copy the themes and images via adb to the emulator.

Themes have to be located in "/sdcard/bradio/themes/" and the file extension has to be ".json". The path to an image can be absolute or relative, so images can also be put into a subfolder.

Here is a complete example of a theme. You can use it as a base to develop your own themes (it it the Skode green theme).

{
"Theme": {
"Name": "Skoda Theme",
"Colors": [
{ "Key": "ColorAccent", "Value": "Green" },
{ "Key": "ColorSelected", "Value": "LightGreen" },
{ "Key": "ColorNotSelected", "Value": "Green" },
{ "Key": "ColorBackground", "Value": "Gray"},
{ "Key": "ColorBackgroundLight", "Value": "Black", "Alpha": "88" },
{ "Key": "ColorStationButton", "Value": "White", "Alpha": "88"},
{ "Key": "ColorStationButtonSelected", "Value": "White", "Alpha": "dd" }
],
"Images": [
{ "Key": "Wallpaper", "Value": "skoda.png", "Type": "File" }
]
}
}

If you have made a cool theme please share it in the forum. I'll add a link here, then.

apollo1976 has posted a nice theme here