Vil du integrere Material Yous dynamiske temafunktion i din app? Dette bibliotek lader dig tilføje det selv på enheder ældre end Android 12.
Materiale dig er den seneste revision af Googles designsprog. Med Material You lægger Google vægt på personalisering, hvilket er grunden til i Android 12, er der et nyt dynamisk temasystem, der omfarver din UX ved hjælp af farver udtrukket fra dit tapet. Dette dynamiske temasystem, kodenavnet "monet", gik live i Android 12 Beta 2, men Google har endnu ikke dokumenteret API'erne/implementeringen, levere supportbiblioteker eller åbnet Google Play for udgivelse af apps målrettet API niveau 31 (Android 12), så langt de fleste udviklere har ikke engang gidet at se på at tilpasse deres apps til at understøtte det dynamiske tema system.
Det betyder det ikke ingen udvikleren leger dog med Android 12s temasystem. Udvikleren af populær automatiseringsapp Tasker har demonstreret dynamisk temaunderstøttelse i sin app ved hjælp af Android 12s officielle API'er. På den anden side, en anden udvikler, kdrag0n,
genskabt systemet i sin helhed ved hjælp af sin egen farveudvinding og paletgenereringsalgoritme. Kdrag0n delte kildekode til sin temamotor og arbejder på et Jetpack Compose og Flutter-bibliotek, så tredjepartsapps bygget til ældre OS-versioner kan implementere hans bud på "monet".Nu er XDA anerkendt udvikler Quinny899 har oprettet sit eget bibliotek, der er baseret på kdrag0ns tilpassede "monet"-implementering (dvs. det er ikke baseret på Googles temamotor). Udviklere kan integrere dette MonetCompat-bibliotek i deres apps for at tilføje understøttelse af dynamisk tematisering af deres apps brugergrænseflade baseret på brugerens tapet. Dette bibliotek fungerer på enheder, der kører Android 5.0 og nyere (ved hjælp af Palette API i kompatibilitetstilstand) og Android 8.1 Oreo og nyere i normal tilstand. Biblioteket kan ikke udtrække farver fra live wallpapers på versioner før Android 8.1 på grund af begrænsninger i platformens API'er.
Hvad angår hvorfor en udvikler måske vil bruge dette bibliotek, forklarer Quinny899 selv på projektets GitHub-side. "Det vides heller ikke i øjeblikket, om Google vil levere deres eget bagudkompatibilitetsbibliotek til Monet med Android 12's udgivelse, så dette bibliotek kan i sidste ende blive erstattet af et officielt. Der bruges ingen proprietær Google-kode i dette projekt, og det er derfor licenseret med MIT-licensen til brug i tredjepartsapps."
Den første app, der bruger MonetCompat, er naturligvis Quinny899s egen DarQ-app. DarQ er en app, der giver dig mulighed for at skifte Androids force dark mode-indstilling pr. app. Det oprindeligt brugt root-adgang at indstille en systemegenskab, men var opdateret at bruge et ADB-shell-script, der køres på brugerens pc, og droppe rodkravet. I DarQ 2.0 behøver brugerne ikke længere at køre ADB-scriptet fra deres pc, da appen nu integrerer Shizuku. Shizuku er en app og service, der lader andre apps køre shell-kommandoer eller få adgang til API'er med ADB shell-brugerrettigheder - tænk på det som en superbrugeradministrationsapp, men for ADB shell-adgang. På Android 11+ kan Shizuku-tjenesten startes gennem den indbyggede trådløse fejlfindingsfunktion, så du slet ikke længere behøver en pc for at opsætte DarQ. Med flytningen til Shizuku bruger DarQ nu også en ProcessObserver frem for en AccessibilityService, som udvikler siger lader DarQ registrere, når en app er åbnet (og dermed anvende force dark-indstillingen) meget mere hurtigt.
Hvis du af en eller anden grund ikke kan lide farven genereret af MonetCompat til DarQ-appen, kan du trykke på "DarQ 2.0" tre gange for at aktivere udviklerindstillinger i appen. Her kan du vælge "Monet Color Picker" for at ændre den farve, du ønsker, at appen skal bruge.
DarQ 2.0 ændringslog
- DarQ 2.0 har et helt nyt design med Material You-elementer og Monet (tapetbaserede) farver.
- ADB-scriptet er nu væk, og i stedet håndterer Shizuku tjenesten på ikke-rodenheder. Hvis du ikke ved, hvad Shizuku er, så tænk på det som en Superuser-app til ikke-rodenheder. Start Shizuku via ADB på en computer (eller endda på din telefon på Android 11 og nyere) én gang pr. opstart, og enhver app, der bruger Shizuku, kan bruge ADB-tjenester.
- Tilgængelighedstjenesten er blevet erstattet med en ProcessObserver ved hjælp af Shizuku/Root-tjenesten. Dette er meget hurtigere end tilgængelighed, så apps, der tidligere åbnede for hurtigt til at blive understøttet, kan nu fungere.
- Forbedringer til det automatiske mørke tema ved solopgang/solnedgang for at fungere bedre på forskellige enheder.
- Forbedringer af Xposed-modulet til apps, der forsøger at blokere brugen af magt mørk, hvilket forhindrer dem i at gøre det.
Læs mere
DarQ XDA forumtråd ||| MonetCompat bibliotek på GitHub