Coloring Android Apps med Palette
26
Del
21
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
En av de definerende trekk ved materialet design er bruken av farger til kompliment og understreke innholdet på skjermen. Bruke Palette klasse, kan utviklere trekke fremtredende farger fra en bitmap til bruk i sine apps for å tilpasse elementene i brukergrensesnittet.
I denne artikkelen vil du lære hvordan du oppretter en Palette objekt fra en bitmap. Inneholdt innenfor hver Palette er et sett av Swatch objekter som vil tillate deg å arbeide med bestemte fargeprofiler og en liste over synlige farger fra bildet.
1. Opprette en Palette
For å komme i gang, må du importere paletten støtte biblioteket inn i prosjektet ved å inkludere følgende linje i avhengig node av prosjektets build.gradle fil. Siden dette er en v7 støtte bibliotek, paletten relaterte klasser er tilgjengelig tilbake til Android API 7.
kompilere 'com.android.support:palette-v7:+'
After kjører en gradle sync på prosjektet ditt, du er i stand til å generere en Palette fra en bitmap. Dette kan gjøres ved hjelp av Palette.Builder enten synkront ved å ringe generere () metode uten parametre, eller asynkront ved å ringe generere (Palette.PaletteAsyncListener lytteren). Fordi det kan ta tid å skape den Palette, anbefales det at synkron metoden bare kalles fra en bakgrunn tråden. I tillegg til de to generere metoder, har Palette.Builder klassen et par andre nyttige metoder som kommer med sine egne avveininger:
maximumColorCount (int numOfSwatches) lar deg endre hvor mange Swatch gjenstander skal genereres fra bitmap. Standard for byggherren er 16. De mer Swatch objektene du genererer, jo lengre tid vil det ta å generere Palette.
Følgende kodebit viser hvordan du oppretter en bitmap fra en lokal ressurs og asynkront skape en Palette objekt. Anmeldelser Bitmap bitmap = BitmapFactory.decodeResource (getResources (), R.drawable.union_station); Palette.from (bitmap) .generate (ny Palette.PaletteAsyncListener () {Override public void onGenerated (Palette palett) {//arbeid med paletten her}});
Når du har en Palette, kan du begynne å jobbe med de tilhørende Swatch objektene
2.. Fargeprøver
Swatch objektene representerer farger som genereres fra et bilde palett. Hver Swatch inneholder:.
en befolkning verdi som gjenspeiler antall piksler representert ved Swatch.
en fargeverdi som kan brukes til tittelteksten når vises på Swatch primære farge.
en fargeverdi som kan brukes til en kropp med tekst når de vises på Swatch primære farge
Swatch Profiler
Hver Palette har et sett med seks forhåndsdefinerte fargeprofiler.
levende
lys levende
mørk levende
dempet
lyset dempet
mørk dempet
Selv om hver av disse kan være nyttig avhengig appen design, levende og mørke levende er den mest brukte. En ting å merke seg er at noen av disse profilene kan være null, så du bør håndtere denne situasjonen tilsvarende. I prøven prosjektet, i onGenerated (Palette palett) metode fra asynkron Palette.Builder, kan du se hvordan du kan hente hver profil Swatch
setViewSwatch (mVibrantTextView, palette.getVibrantSwatch ());. SetViewSwatch (mLightVibrantTextView, palett. getLightVibrantSwatch ()); setViewSwatch (mDarkVibrantTextView, palette.getDarkVibrantSwatch ()); setViewSwatch (mMutedTextView, palette.getMutedSwatch ()); setViewSwatch (mLightMutedTextView, palette.getLightMutedSwatch ()); setViewSwatch (mDarkMutedTextView, palette.getDarkMutedSwatch ()); < p> setViewSwatch (TextView visning, Palette.Swatch swatch) er en metode som aksepterer en Swatch og TextView, og setter TextView bakgrunn og tekst farger fra verdier i Swatch. Du vil merke at vi først sjekke for å se om Swatch er null, og hvis det er, vi bare skjule utsikten.
Public void setViewSwatch (TextView visning, Palette.Swatch swatch) {if (swatch! = Null) {view.setTextColor (swatch.getTitleTextColor ()); view.setBackgroundColor (swatch.getRgb ()); view.setVisibility (View.VISIBLE); } Else {view.setVisibility (View.GONE); }}
Andre Prøver
I tillegg til standard profil Swatch gjenstander, inneholder hver Palette en liste over generelle Swatch gjenstander generert fra bitmap. Disse kan hentes fra Palette som en liste ved hjelp av getSwatches () -metoden
I prøven prosjektet, er dette List hentet og plassert i en ArrayAdapter. ≪ Palette.Swatch > som viser deretter Swatch primærfarge og brødtekst farge, samt antall piksler som er representert i bitmap av denne Swatch. En ting å ta hensyn til er at listen er ikke i noen spesiell rekkefølge. I prøven prosjektet, har jeg sortert elementene ved sin befolkning verdi
for (Palette.Swatch swatch: palette.getSwatches ()) {mAdapter.add (swatch);} mAdapter.sortSwatches (); mAdapter.notifyDataSetChanged (. );
I denne kodebiten, er mAdapter adapteren av Swatch objekter med følgende metoder:
Overridepublic Vis getView (int posisjon, Utsikt convertView, ViewGroup forelder) {ViewHolder holder; if (convertView == null) {Holder = new ViewHolder (); convertView = LayoutInflater.from (getContext ()) .inflate (R.layout.color_item, foreldre, false); holder.view = (TextView) convertView.findViewById (R.id.view); convertView.setTag (holder); } Else {holderen = (ViewHolder) convertView.getTag (); } Holder.view.setBackgroundColor (getItem (stilling) .getRgb ()); holder.view.setTextColor (getItem (stilling) .getBodyTextColor ()); holder.view.setText ("Befolkning:" + getItem (posisjon) .getPopulation ()); returnere convertView;} public void sortSwatches () {sort (ny Comparator < Palette.Swatch > () {Override public int sammenligne (Palette.Swatch LHS, Palette.Swatch rhs) {return rhs.getPopulation () - lhs.getPopulation ( );}});} public class ViewHolder {TextView view;}
Konklusjon
I denne artikkelen har du lært om Palette støtte biblioteket og hvordan du kan hente fargeprøver av farge fra en bitmap. Dette vil tillate deg å tilpasse brukergrensesnittet elementer, for eksempel bakgrunner og tekst, slik at de kompliment bilder i programmet ditt. Når kombinert med fargen og ColorUtil klasser (tilgjengelig i v4 støtte bibliotek), har du enda flere alternativer tilgjengelige for fargelegging av programmet ditt.