söndag 29 juni 2014

Utmaningen med Material Design

Det har hunnit gå några dagar sedan Googles utvecklarekonferens, Google I/O, som jag dels sett blandade avsnitt från på distans med 99 andra nördar (tack, Javaforum och King!) och dels på Googles utvecklarkanal på YouTube genom min Chromecast. Nu går hjärnan på högvarv och funderar över de nyheter som presenterades.

För mig känns det om om den mest intressanta och allomfattande förändringen är Googles nya standard för grafiska gränssnitt, Material Design. Samtidigt som jag tittat med stort intresse och viss fascination på några av de I/O-sessioner som behandlat ämnet slås jag av en känsla av hopplöshet. En gång i tiden kunde man som programmerare skapa ett snyggt gränssnitt bara genom att använda tydliga standardkomponenter och smart layouthantering, och det räckte att ha en viss stilistisk känsla och att vara konsekvent, noggrann och logisk för att resultatet skulle bli bra. I framtiden kommer varje applikation att vara lite av ett konstverk och då kommer man nog att behöva ha en designer vid sin sida om man som jag saknar äkta artistisk talang och känsla för färg och form.

Det verkar som om Google tänkt sig att man ska använda Material Design inte bara i Android-applikationer utan även på webben och t o m i IOS-applikationer. Vill man utveckla för webben har Google släppt ett antal webbkomponenter inspirerade av Material Design. Man kan undra hur det skulle se ut om även andra utvecklare av exempelvis mobila plattformar började förvänta sig att utvecklare tillämpar just deras riktlinjer även på konkurrerande plattformar i någon sorts högre syfte att nå ett konsekvent utseende överallt -- hur ädelt målet än må vara.

Jag har ännu bara skrapat på ytan när det gäller min förståelse av Material Design. Jag tror mig dock ha hunnit skönja några grundläggande drag. Kortfattat bygger tankesättet på att allt som presenteras i en applikation skrivs i "bläck" -- som kan vara i valfri färg -- på "pappersark". Även pappersark kan vara i valfri färg, men man kan inte producera något innehåll om man inte har ett papper att rita på. Pappersark är primärt rektangulära, men i enskilda fall kan de även vara runda (för att exempelvis rita en färgad "action-knapp"). Vissa särskilda element som statusfältet på Android-enheter utgör ett undantag, och anses vara "målade" direkt på skärmens glasdisplay (och kommer således runt begränsningarna med "papper").

Ett typiskt gränssnitt består av flera olika pappersark. Vissa kan användas för utplacering av navigeringselement, medan andra uteslutande presenterar innehåll. Komponenter och ark har förutom sina traditionella X- och Y-koordinater även en placering på Z-axeln, dvs i djupled. När pappersark förflyttas av användaren genom en svepgest (t ex för att scrolla i en lista) så kan andra pappersark på en annan djupnivå bli synliga. Pappersark kan följa varandra på relativt komplicerade sätt beroende på vad man vill uppnå som utvecklare.

Man uppmuntras även att tänka på övergångar och animeringar när man utformar sitt gränssnitt enligt de nya riktlinjerna. En Power Point-liknande övergång från en skärm till en annan utan ett logiskt genomtänkt flöde kring hur komponenterna animeras är utesluten. I stället skall användaren i animeringen tydligt uppmärksammas på vilket grafiskt objekt som gav upphov till förändringen. Om en knapptryckning i en lista exempelvis avslöjar en bild så skall bilden animeras ut från knappen. Vidare skall element som skapas med röstkommandon som grund animeras ut från mikrofon-ikonen. Inte heller animeringarnas flöde lämnas till sitt öde -- man uppmuntras att skapa mjuka sinusformade övergångar i stället för animeringar med konstant flöde, vilka anses "onaturliga".

Det finns väldigt mycket att säga om Material Design men jag behöver mera tid för att smälta intrycken. Idag finns det heller inte så många konkreta exempel att hämta inspiration och förståelse från. Jag har visserligen installerat förhandsutgåvan av nästa stora Android-version med kodnamn "L" på min Nexus 5-telefon, men nästan ingen av Googles egna applikationer har ännu genomgått den stora omdaningen. Ett av få undantag är notifikationsfältet i Android, som numera består av överlappande pappersark på ett för mig förvirrande sätt. Dels finns snabbgenvägar för att t ex stänga av trådlöst nätverk i sitt eget pappersark -- inga konstigheter i sig -- men vissa av notifikationerna hamnar också förbluffande nog i ett eget pappersark skilt från arket med de övriga. Alla dessa ark rör sig ett flytande sätt och delvis oberoende av varandra när man sveper uppåt och nedåt. Om man klickar på en av många små symboler bland snabbgenvägarna öppnas den klassiska inställningsdialogen.

Ett av syftena med den nya typen av design är att användaren intuitivt skall begripa hur applikationen fungerar och hur användargränssnittselementen hör ihop, men jag undrar om inte klassiska widgets av standardmodell är enklare att förstå. Då visste man åtminstonde var man kunde klicka för att något skulle hända...