Dette tredjepartsbiblioteket bringer Android 12s Material You-tema til enhver app

Vil du integrere Material Yous dynamiske temafunksjon i appen din? Dette biblioteket lar deg legge det til selv på enheter eldre enn Android 12.

Materiale deg er den siste revisjonen av Googles designspråk. Med Material You legger Google vekt på personalisering, og det er derfor i Android 12, er det et nytt dynamisk temasystem som omfarger brukeropplevelsen din ved hjelp av farger hentet fra bakgrunnen din. Dette dynamiske temasystemet, med kodenavnet "monet", gikk live i Android 12 Beta 2, men Google har ennå ikke dokumentert API-ene/implementeringen, gitt støttebiblioteker eller åpnet Google Play for å publisere apper som målretter API nivå 31 (Android 12), så de aller fleste utviklere har ikke engang brydd seg med å tilpasse appene sine for å støtte det dynamiske temaet system.

Det betyr ikke det Nei Utvikleren leker med Android 12s temasystem. Utvikleren av populær automatiseringsapp Tasker har demonstrert dynamisk temastøtte i appen sin ved å bruke Android 12s offisielle APIer. På den annen side, en annen utvikler, kdrag0n,

gjenskapte systemet i sin helhet ved å bruke sin egen fargeutvinning og palettgenereringsalgoritme. Kdrag0n delte kildekode for sin temamotor og jobber med et Jetpack Compose og Flutter-bibliotek slik at tredjepartsapper bygget for eldre OS-versjoner kan implementere hans oppfatning av «monet».

Nå, XDA anerkjent utvikler Quinny899 har laget et eget bibliotek som er basert på kdrag0ns tilpassede "monet"-implementering (dvs. det er ikke basert på Googles temamotor). Utviklere kan integrere dette MonetCompat-biblioteket i appene sine for å legge til støtte for dynamisk tematisering av appens brukergrensesnitt basert på brukerens bakgrunn. Dette biblioteket fungerer på enheter som kjører Android 5.0 og nyere (bruker Palette API i kompatibilitetsmodus) og Android 8.1 Oreo og nyere i normal modus. Biblioteket kan ikke trekke ut farger fra levende bakgrunnsbilder på versjoner før Android 8.1 på grunn av begrensninger i plattformens APIer.

Når det gjelder hvorfor en utvikler kanskje vil bruke dette biblioteket, forklarer Quinny899 selv på prosjektets GitHub-side. "Det er foreløpig heller ikke kjent om Google vil tilby sitt eget bakoverkompatibilitetsbibliotek for Monet med Android 12s utgivelse, så dette biblioteket kan bli erstattet av et offisielt etter hvert. Ingen proprietær Google-kode brukes i dette prosjektet, og derfor er det lisensiert med MIT-lisensen for bruk i tredjepartsapper."

Den første appen som bruker MonetCompat er selvfølgelig Quinny899s egen DarQ-app. DarQ er en app som lar deg bytte Androids innstilling for tvungen mørk modus per app. Den opprinnelig brukt root-tilgang å angi en systemegenskap, men var oppdatert å bruke et ADB-skallskript som kjøres på brukerens PC, og slipper rotkravet. I DarQ 2.0 trenger ikke brukere lenger å kjøre ADB-skriptet fra PC-en, ettersom appen nå integreres Shizuku. Shizuku er en app og tjeneste som lar andre apper kjøre skallkommandoer eller få tilgang til APIer med ADB-skallbrukerprivilegier - tenk på det som en superbrukeradministrasjonsapp, men for ADB-skalltilgang. På Android 11+ kan Shizuku-tjenesten startes gjennom den innebygde trådløse feilsøkingsfunksjonen, slik at du ikke lenger trenger en PC i det hele tatt for å sette opp DarQ. Med flyttingen til Shizuku bruker DarQ nå også en ProcessObserver i stedet for en AccessibilityService, som utvikler sier lar DarQ oppdage når en app har åpnet (og dermed bruke innstillingen for force dark) mye mer raskt.

Hvis du, uansett grunn, ikke liker fargen generert av MonetCompat for DarQ-appen, kan du trykke på "DarQ 2.0" tre ganger for å aktivere utvikleralternativer i appen. Her kan du velge "Monet Color Picker" for å endre fargen du vil at appen skal bruke.

DarQ 2.0 endringslogg

  • DarQ 2.0 har et helt nytt design, med Material You-elementer og Monet (bakgrunnsbaserte) farger.
  • ADB-skriptet er nå borte, og i stedet håndterer Shizuku tjenesten på ikke-rotenheter. Hvis du ikke vet hva Shizuku er, kan du tenke på det som en Superuser-app for enheter uten rot. Start Shizuku via ADB på en datamaskin (eller til og med på telefonen din på Android 11 og nyere) én gang per oppstart, og enhver app som bruker Shizuku kan bruke ADB-tjenester.
  • Tilgjengelighetstjenesten er erstattet med en ProcessObserver ved å bruke Shizuku/Root-tjenesten. Dette er mye raskere enn tilgjengelighet, så apper som tidligere åpnet for raskt til å bli støttet, kan nå fungere.
  • Forbedringer av det automatiske mørketemaet ved soloppgang/solnedgang for å fungere bedre på forskjellige enheter.
  • Forbedringer av Xposed-modulen for apper som prøver å blokkere bruken av makt mørk, og hindrer dem i å gjøre det.

Les mer

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