Detta tredjepartsbibliotek tar med Android 12s Material You-tema till alla appar

Vill du integrera Material Yous dynamiska temafunktion i din app? Det här biblioteket låter dig lägga till det även på enheter äldre än Android 12.

Material du är den senaste versionen av Googles designspråk. Med Material You betonar Google personalisering, och det är därför i Android 12, det finns ett nytt dynamiskt temasystem som färgar om din UX med hjälp av färger extraherat från din tapet. Detta dynamiska temasystem, med kodnamnet "monet", gick live i Android 12 Beta 2, men Google har ännu inte dokumenterat API: erna/implementeringen, tillhandahållit supportbibliotek eller öppnat Google Play för att publicera appar som är inriktade på API nivå 31 (Android 12), så de allra flesta utvecklare har inte ens brytt sig om att anpassa sina appar för att stödja det dynamiska temat systemet.

Det betyder inte det Nej Utvecklaren leker dock med Android 12s temasystem. Utvecklaren av populära automationsappen Tasker har visat stöd för dynamiskt tema i sin app med Android 12:s officiella API: er. Å andra sidan, en annan utvecklare, kdrag0n,

återskapade systemet i sin helhet använder sin egen färgextraktion och palettgenereringsalgoritm. Kdrag0n delade källkod för sin temamotor och arbetar på ett Jetpack Compose och Flutter-bibliotek så att tredjepartsappar byggda för äldre OS-versioner kan implementera hans syn på "monet".

Nu är XDA erkänd utvecklare Quinny899 har skapat ett eget bibliotek som är baserat på kdrag0ns anpassade "monet"-implementering (dvs. dess inte baserat på Googles temamotor). Utvecklare kan integrera detta MonetCompat-bibliotek i sina appar för att lägga till stöd för att dynamiskt utforma appens användargränssnitt baserat på användarens bakgrund. Det här biblioteket fungerar på enheter som kör Android 5.0 och senare (med Palette API i kompatibilitetsläge) och Android 8.1 Oreo och senare i normalt läge. Biblioteket kan inte extrahera färger från levande bakgrundsbilder på versioner före Android 8.1 på grund av begränsningar i plattformens API: er.

Vad gäller varför en utvecklare kanske vill använda det här biblioteket, förklarar Quinny899 själv på projektets GitHub-sida. "Det är för närvarande inte känt om Google kommer att tillhandahålla sitt eget bakåtkompatibilitetsbibliotek för Monet med Android 12:s release, så det här biblioteket kan komma att ersättas av ett officiellt så småningom. Ingen proprietär Google-kod används i detta projekt, och därför är den licensierad med MIT-licensen för användning i tredjepartsappar."

Den första appen som använder MonetCompat är förstås Quinny899s egen DarQ-app. DarQ är en app som låter dig växla Androids inställning för tvångsmörkt läge per app. Det ursprungligen använd root-åtkomst att ställa in en systemegenskap men var uppdaterad för att använda ett ADB-skalskript som körs på användarens PC, vilket släpper rotkravet. I DarQ 2.0 behöver användare inte längre köra ADB-skriptet från sin PC, eftersom appen nu integreras Shizuku. Shizuku är en app och tjänst som låter andra appar köra skalkommandon eller komma åt API: er med ADB-skalanvändarbehörigheter - tänk på det som en superanvändarhanteringsapp men för ADB-skalåtkomst. På Android 11+ kan Shizuku-tjänsten startas genom den inbyggda trådlösa felsökningsfunktionen, så att du inte längre behöver en PC alls för att ställa in DarQ. Med flytten till Shizuku använder DarQ nu också en ProcessObserver snarare än en AccessibilityService, som utvecklaren säger låter DarQ upptäcka när en app har öppnats (och därmed tillämpa inställningen force dark) mycket mer snabbt.

Om du, av någon anledning, inte gillar färgen som genereras av MonetCompat för DarQ-appen, kan du trycka på "DarQ 2.0" tre gånger för att aktivera utvecklaralternativ i appen. Här kan du välja "Monet Color Picker" för att ändra färgen du vill att appen ska använda.

DarQ 2.0 ändringslogg

  • DarQ 2.0 har en helt ny design, med Material You-element och Monet (tapetbaserade) färger.
  • ADB-skriptet är nu borta, och istället hanterar Shizuku tjänsten på icke-root-enheter. Om du inte vet vad Shizuku är, tänk på det som en Superuser-app för icke-rootenheter. Starta Shizuku via ADB på en dator (eller till och med på din telefon på Android 11 och senare) en gång per start, och alla appar som använder Shizuku kan använda ADB-tjänster.
  • Tillgänglighetstjänsten har ersatts med en ProcessObserver, med hjälp av Shizuku/Root-tjänsten. Detta är mycket snabbare än tillgänglighet, så appar som tidigare öppnades för snabbt för att stödjas kan nu fungera.
  • Förbättringar av det automatiska mörka temat vid soluppgång/solnedgång för att fungera bättre på olika enheter.
  • Förbättringar av Xposed-modulen för appar som försöker blockera användningen av force dark, vilket hindrar dem från att göra det.

Läs mer

DarQ XDA-forumtråd ||| MonetCompat Library på GitHub