Android-bronnen en internationalisering

basisgids-programmeren-android-5

De middelen ze zijn een fundamenteel onderdeel van een Android-applicatie. Wanneer mogelijk we zullen ze scheiden van de codeOp deze manier komen we tot een beter onderhoudbare applicatie. Als we ze goed organiseren, zorgt Android er ook voor dat het juiste element voor ons wordt gekozen, afhankelijk van de configuratie - meestal de schermgrootte en de taal van de gebruiker.

Basisbronnen: afbeeldingen en teksten

De teksten ze moeten altijd gescheiden zijn van de code. Als we dat niet doen, kost het ons meer om de code te onderhouden: we zouden alle gebeurtenissen moeten herzien en we zouden er elke keer een paar kunnen vergeten als we wijzigingen moeten aanbrengen. Het ergste van alles is dat onze applicatie dan niet internationaliseerbaar is.

Daarom wordt het niet aanbevolen om teksten in de code te plaatsen. De enige uitzondering kunnen berichten zijn die niet bedoeld zijn voor de eindgebruiker, zoals console-uitvoerberichten. Maar over het algemeen zullen al onze teksten naar een afzonderlijk bronbestand​ We zullen dat bestand noemen tekenreeksen.xml, en je volledige pad binnen het project zal zijn res / values ​​/ strings.xml.

Een strings.xml-bestand zal de volgende inhoud hebben:

<resourcessnaar naam = "tekenreeks_1">tekst_1
    <snaar naam = "tekenreeks_2">tekst_2

Nu kunnen we in onze code deze teksten ophalen met zinnen als getResources (). GetString (R.string.string_1), of binnen onze lay-outs zoals @ string / string_1. Op deze manier hebben we bereikt wat we wilden: de code wordt resource-onafhankelijk.

De andere bron die we regelmatig zullen gebruiken, is de beeldspraak​ Hiervoor hebben we verschillende mappen binnen het project, zoals res / drawable, res / drawable-hdpi, res / drawable-xhdpi en dergelijke.

De achtervoegsels die volgen op "drawable" verwijzen naar de scherm dichtheid​ Elk Android-apparaat heeft een pixeldichtheid per scherm die is gegroepeerd in verschillende groepen:

  • ldpi (klein, x0,75)
  • mdpi (gemiddelde x1)
  • hdpi (groot x1,5)
  • xhdpi (extra groot x2)
  • xxhdpi (extra extra groot x3)

Op deze manier kan hetzelfde beeld worden aangepast verschillende schermdichtheden zonder dat er misvormingen optreden. Het wordt aanbevolen om in elke map een kopie van de afbeelding te plaatsen, met inachtneming van de verhoudingen (waarbij mdpi als basis wordt genomen en gelijk is aan 1), hoewel u er ook maar één kunt gebruiken en Android dan automatisch een schaalaanpassing zal uitvoeren voor de andere resoluties. Het wordt echter aanbevolen om alle mappen te dekken om het systeem deze extra inspanning te besparen.

De "tekenbare" map zal geen afbeeldingen bevatten, we zullen deze alleen gebruiken voor xml-definities van geavanceerde elementen, zoals selectors.

Andere bronnen

Binnen de / res directory van het project kunnen veel meer bronnen terecht. Geluiden, kleurdefinities die op dezelfde manier kunnen worden gebruikt als teksten, afmetingen voor onze applicatie, stijlen voor onze weergaven en nog veel meer.

Voor degenen die meer willen weten over deze bronnen, kunt u contact opnemen met de officiële Android-documentatie.

Internationalisering op Android

Met de afbeeldingen hebben we al een introductie gemaakt alternatief bronsysteem op Android: Als we een xhdpi-dichtheidsscherm hebben (dat van een Galaxy S3, bijvoorbeeld), geeft Android de voorkeur aan de afbeeldingen in de map drawable-xhdpi boven de andere.

Dit systeem kan worden gebruikt om vele andere configuraties te onderscheiden: normale of liggende oriëntatie, rij- of normale modus, nacht- of normale modus ... Nogmaals, we raden aan de officiële Android-documentatie om alle details te kennen. We hebben het al gehad over het leveren van afbeeldingen op basis van de dichtheid van het scherm, nu zullen we ons concentreren op een ander zeer belangrijk gebruik voor onze toepassing: de internationalisering.

Als we willen dat onze teksten in meerdere talen beschikbaar zijn, zullen we voor elke kopie van het strings.xml-bestand een andere map moeten toevoegen. Dus als we onze applicatie willen porten naar het Engels en Frans, zouden we deze drie mappen hebben:

  • res / values ​​(standaardwaarden)
  • res / values-en
  • res / waarden-fr

Dat wil zeggen, een achtervoegsel met de ISO-code van de specifieke taal wordt aan de map toegevoegd en we laten de standaardteksten in de map achter zonder achtervoegsel. Dat laatste is erg belangrijk, want behalve bij de dichtheid van het scherm, moeten we altijd een geven standaardwaarde voor alle bronnen. Wanneer we een bron van welk type dan ook nodig hebben, zoekt Android naar degene die het beste past, en als het er geen vindt, kunnen we onverwachte sluitingen van de applicatie vinden. Daarom moet er altijd een taal zijn die we standaard kiezen, en dat alle bronnen hun standaardwaarde hebben.

Op deze manier krijgen we weer wat we wilden: naast het scheiden van de teksten van de code, kunnen we nu de applicatie in verschillende talen zonder onze code helemaal aan te raken.

Het systeem voor het genereren van alternatieve bronnen is natuurlijk combineerbaar. Door de link te volgen die we eerder hebben aangegeven, zullen we zien in welke volgorde de achtervoegsels moeten gaan. Als we het eenvoudige voorbeeld volgen dat we in deze tutorial aangeven, zouden we kunnen denken aan afbeeldingen die alleen voor de Engelse versie zijn. Dit wordt bereikt door een map res / drawable-en-xhdpi te maken, of een andere schermdichtheid die we nodig hebben. Op die manier kunnen we een breed scala aan bronnen bieden en hoeven we ons geen zorgen te maken over het kiezen van de juiste. Natuurlijk: zonder te vergeten dat de schermdichtheid de enige modificator is die geen standaardwaarden nodig heeft. Alle andere hebben een standaardwaarde nodig, anders lopen we het risico dat de applicatie crasht.


Ben je geïnteresseerd in:
Hoe virussen op Android te verwijderen
Volg ons op Google Nieuws

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Actualidad Blog
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.