Skip to content

Support Dynamic theme for Android 11 and below - #2845

Open
cuong-tran wants to merge 2 commits into
mihonapp:mainfrom
cuong-tran:monet-sdk30
Open

cuong-tran wants to merge 2 commits into
mihonapp:mainfrom
cuong-tran:monet-sdk30

Conversation

@cuong-tran

@cuong-tran cuong-tran commented Jan 9, 2026 •

Copy link
Copy Markdown
Contributor

Antsy added MaterialKolor which allows using Monet theme on Android 11 and below but forgot to remove the guarding condition to allow user to select it.

Also switch style to TonalSpot instead of Expressive for more relevant to other theme style.

Demo SS on Android 11:

Wallspaper Style TonalSpot Style Expressive
Screenshot_20260112_094224 Screenshot_20260112_094358 Screenshot_20260112_094446
Screenshot_20260112_095623 Screenshot_20260112_095639 Screenshot_20260112_095605

Copilot AI review requested due to automatic review settings January 9, 2026 07:15

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends dynamic theme (Monet) support to Android 11 and below by leveraging the MaterialKolor library instead of relying solely on native Android 12+ dynamic color APIs. The changes also switch the palette style from Expressive to TonalSpot for better consistency with other theme styles.

  • Removes SDK version checks that previously restricted Monet theme to Android 12+
  • Changes default theme to Monet for all devices with appropriate fallbacks
  • Switches MaterialKolor palette style from Expressive to TonalSpot

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
DeviceUtilExtensions.kt Deleted file containing dynamic color availability check that is no longer needed
MonetColorScheme.kt Updated palette style from Expressive to TonalSpot for MaterialKolor-based color scheme generation
AppThemePreferenceWidget.kt Removed dynamic color availability filter to show Monet theme option on all Android versions
UiPreferences.kt Simplified default theme preference to always use Monet (with fallbacks for older devices)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@MajorTanya

Copy link
Copy Markdown
Member

How does this magically make it available?

Also, what on earth is that new thing? Expressive is just M3's next cursed evolution, but I've never heard of this.

@cuong-tran

cuong-tran commented Jan 9, 2026 •

Copy link
Copy Markdown
Contributor Author

How does this magically make it available?

Also, what on earth is that new thing? Expressive is just M3's next cursed evolution, but I've never heard of this.

It (Monet for older Android) was added long ago, and recently made change to use of MateralKolor with these commit:

I simply remove the old condition guarding the use of Monet theme with SDK below Android 11.

@MajorTanya

Copy link
Copy Markdown
Member

When was Monet made available for older Android versions? Doesn't that depend on literal system functions that don't exist in the older versions?

Also, that doesn't answer my question about TonalSpot. What does that do? Does it affect the components in some way? Do they look different?

@cuong-tran

Copy link
Copy Markdown
Contributor Author

When was Monet made available for older Android versions? Doesn't that depend on literal system functions that don't exist in the older versions?

Also, that doesn't answer my question about TonalSpot. What does that do? Does it affect the components in some way? Do they look different?

MaterialKolor is what making Monet supported on older Android version by providing the missing system alternative functions.

MaterialKolor provides various styles to use when generating its theme palette color, such as TonalSpot, Rainbow, Expressive...

@MajorTanya

Copy link
Copy Markdown
Member

When was Monet made available for older Android versions? Doesn't that depend on literal system functions that don't exist in the older versions?

Also, that doesn't answer my question about TonalSpot. What does that do? Does it affect the components in some way? Do they look different?

MaterialKolor is what making Monet supported on older Android version by providing the missing system alternative functions.

MaterialKolor provides various styles to use when generating its theme palette color, such as TonalSpot, Rainbow, Expressive...

I see. Why the switch to TonalSpot then? And again, what impact does that have on the components visually?

@cuong-tran

Copy link
Copy Markdown
Contributor Author

When was Monet made available for older Android versions? Doesn't that depend on literal system functions that don't exist in the older versions?
Also, that doesn't answer my question about TonalSpot. What does that do? Does it affect the components in some way? Do they look different?

MaterialKolor is what making Monet supported on older Android version by providing the missing system alternative functions.
MaterialKolor provides various styles to use when generating its theme palette color, such as TonalSpot, Rainbow, Expressive...

I see. Why the switch to TonalSpot then? And again, what impact does that have on the components visually?

I updated PR description to include screenshot, notice the secondary color difference
image

@nubesurrealista

Copy link
Copy Markdown

Tested on my build in Android 11, works very well!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants