Håndtering av orienteringsendringer i Android UI-rammeverket

Et aspekt ved Android-utvikling som kan være skremmende for nykommere, er hvordan man skal takle orienteringsendringer. Operativsystemet Android starter den nåværende aktiviteten på nytt når enheten roteres, og i flere andre tilfeller. Rammeingeniørene på Google hadde gode grunner for å utforme aktivitetslivssyklusen på denne måten, men denne kunnskapen gjør ikke at håndteringen fra portrett til landskap blir mindre frustrerende for spirende Android-utviklere.

Det er to elementer en utvikler må gjøre rede for under en orienteringsendring: opprettholde tilstand og laste inn ressurser på nytt. Det er sistnevnte jeg skal ta opp i dette innlegget, og hvis det skaffer nok interesse, kan det hende jeg skriver om å opprettholde tilstanden på et eller annet tidspunkt nede i veien. La oss vurdere de fire vanligste måtene å håndtere orienteringsendringer på brukergrensesnittet og se på noen koder.

1: Gjør ingenting

Hvis dette høres ut som en dårlig idé for deg, er det sannsynligvis det. Imidlertid er det noen veldig forenklede grensesnitt der det å ikke bekymre seg for rotasjonen (bare når det gjelder UI) er en gyldig tilnærming. Bildene i figur A illustrerer det vanligste problemet når utviklere ikke gjør noe på en skjermrotasjon - en del av brukergrensesnittet går tapt.

Figur A

Klikk på bildene for å forstørre.

2: Undertrykk det

Det er mulig å undertrykke retningsendringen og tvinge appen din til å alltid fungere i stående eller liggende modus. Dette forhindrer bare at brukergrensesnittet roterer - det hindrer ikke aktiviteten i å starte på nytt. Det er en veldig vanlig feil for nye utviklere å tro at de ikke trenger å forholde seg til å opprettholde tilstanden ved å undertrykke orienteringsendringer. Enten orienteringsendringer skjer, applikasjoner fremdeles må håndtere aktivitetsstart på grunn av ting som innkommende anrop, trykke på hjem-tasten, osv. Når det er sagt, hvis du er sikker på å undertrykke orienteringsendringen er den rette måten å gå for deg, det er ganske enkelt en sak å legge til en egenskap til manifestfilen for hver aktivitet som berøres. Se figur B.

 ".SuppressIt" android: screenOrientation = "portrett" /> 

Figur B

Klikk på bildene for å forstørre.

3: Bruk en rullevisning

Selv om det ikke er det riktige valget for alle typer brukergrensesnitt, fungerer rullevisninger godt for ting som applikasjonspreferanser. Hemmeligheten bak å bruke en rullevisning er i forståelsen av at du må pakke alle brukergrensesnittelementene dine inn i en enkelt layoutkode, for eksempel en lineærLayout. Rullevisninger kan bare håndtere en enkelt foreldre-layout. Se figur C.

 "1.0" encoding = "utf-8" ?> 
 "Http://schemas.android.com/apk/res/android" 
 android: rullefelt = "vertikal" 
 android: layout_height = "wrap_content" 
 android: layout_width = "fill_parent" > 
 android: orientering = "vertikal" 
 android: layout_width = "fill_parent" 
 android: layout_height = "fill_parent" > 
 Figur C 

Klikk på bildene for å forstørre.

4: Legg i en alternativ layout

Etter min erfaring er det ofte å laste inn en ny layoutfil. Selv om det ikke er intuitivt siden ressursmappene du trenger ikke er opprettet av den nye prosjektveiviseren, kan du ha to versjoner av hver layout. Trikset er å lage en ny katalog under / res-mappen med tittelen: layout-land. Eventuelle xml-filer som finnes i layout-land-mappen, vil bli brukt når aktiviteten starter på nytt og bestemmer at telefonen skal ligge i retning. Se figur D.

Figur D

Klikk på bildene for å forstørre.

Jeg har laget et demoprogram som lar deg se hver av disse tilnærmingene. Det kan lastes ned her. Til neste gang, lykkelig koding!

© Copyright 2021 | mobilegn.com