ID.nl logo
Zelf mobiele apps bouwen (deel 3)
© Reshift Digital
Huis

Zelf mobiele apps bouwen (deel 3)

In het vorige deel hebben we een nieuw project gemaakt. Hiermee heb je eigenlijk meteen een basis voor je app. We laten nu zien welke bestanden zijn aangemaakt en wat het doel van die bestanden is. Ook gaan we op twee manieren een tekst aanpassen: via de gebruikersinterface en via code.

We gaan in dit deel verder met de app die we in deel 2 hadden opgezet. Herhaal als het nodig is de stappen door in Android Studio een nieuw project te beginnen met als template Empty Activity. Hiermee zijn al enkele mappen en bestanden voor de app gemaakt en ook al grotendeels ingevuld, zodat je in feite al een werkende app hebt. In het projectvenster zie je deze bestanden en mappen terug onder de map app. Het gaat om:

- manifests: deze map bevat het belangrijke bestand AndroidManifest.xml, dat allemaal details over je app bevat. Er staat bijvoorbeeld in welke activity moet worden begonnen bij het starten van de app. Als toegang nodig is tot systeemonderdelen, zoals internet of de camera, vermeld je dat ook in dit bestand. Bij het uitbreiden van je app zul je hier zelf aanpassingen in maken;

- java: deze map bevat alle broncode voor je app (in Kotlin of Java) in verschillende mappen. Hierbij gebruik je doorgaans de bovenste map (met de ‘package name’ als naam). De twee mappen daaronder bevatten testcode. Er is in de map al één bestand met de naam MainActivity.kt gemaakt, waarin al enkele regels code zijn ingevuld. Aan de extensie .kt kun je zien dat het in Kotlin is geschreven.

- res: deze map bevat extra zogeheten resources (bronnen), verdeeld over mappen. In de map drawable vind je grafische bestanden. De map layout bevat alle lay-outs. Daarmee bedoelen we de schermen voor de app, ofwel grafische interfaces, waarop bijvoorbeeld teksten, afbeeldingen en buttons staan. Zo’n lay-out wordt beschreven in een xml-bestand en voor het eerste eenvoudige scherm is al een bestand activity_main.xml gegenereerd. De map values bevat andere resources, zoals variabelen die in de app worden gebruikt. Zo vind je in strings.xml de naam die je aan de app hebt gegeven terug.

©PXimport

Lay-out openen

Open de automatisch gegeneerde lay-out via het projectvenster door onder app/res/layout te dubbelklikken op activity_main.xml. Deze lay-out wordt dan aan de rechterkant geopend, waar het zoals elk geopend bestand een eigen tabblad krijgt. Bij het bewerken van een lay-out kies je rechtsboven uit de drie modi Code, Split en Design.

Onder Code kun je het xml-bestand rechtstreeks bewerken. Via Design kan dit visueel door bijvoorbeeld elementen naar de app te slepen. Bij de modus Split heb je die twee opties naast elkaar. We beginnen met Design.

Links in het venster Palette zie je alle componenten waarmee je de gebruikersinterface voor je app bouwt, zoals teksten, afbeeldingen en knoppen. Dat doe je door zulke componenten naar je scherm te slepen en daarop te positioneren. Er is al één component voor tekst geplaatst, ook wel TextView genoemd. In de gebruikersinterface zie je dat deze component al de tekst Hello World! bevat. Als je op die tekst klikt, is de TextView-component geselecteerd, wat je ook ziet in het venster Component Tree. Dat is een soort boomstructuur voor alle gebruikte componenten.

©PXimport

Tip: bestanden terugvinden

Wil je voor een geopend bestand weten wáár het tussen je projectbestanden staat? Klik dan in het projectvenster op het icoontje Select Opened File.

Eigenschappen aanpassen

Elke component kent talloze eigenschappen die je kunt aanpassen, ook wel attributen genoemd. Zorg daarvoor eerst dat de component is geselecteerd, door erop te klikken in de gebruikersinterface of in de Component Tree. Selecteer als voorbeeld de TextView-component en open rechts (als het nog niet is geopend) het venster Attributes. Hierin vind je alle attributen voor deze component. De tekst voor de TextView is in eerste instantie Hello World! en vind je bij het attribuut met de naam text. De attributen waaraan reeds een waarde is toegekend, vind je altijd snel terug onder Declared Attributes.

Er zijn nog talloze andere attributen. De volledige lijst vind je onder All Attributes. Veel attributen komen in latere delen aan bod, als we dieper ingaan op het bouwen van gebruikersinterfaces. We gaan alvast één belangrijke attribuut met de naam id invullen. Daarmee kunnen we straks in code de component aanwijzen. Dit attribuut vind je al direct bovenaan. Vul de gewenste naam in; als voorbeeld kiezen we text_welkom.

Ga ten slotte rechtsboven naar Code om te zien hoe de lay-out er in het xml-bestand uitziet. Let daarin vooral op de TextView-component en de attributen text en id. Als je het handiger vindt, kun je ook altijd in het xml-bestand aanpassingen maken. Dat gaat in sommige gevallen sneller omdat je wat handiger kunt knippen, kopiëren en plakken.

©PXimport

Code schrijven volgens de richtlijnen

Bij het programmeren is het altijd handig om bepaalde richtlijnen te volgen, zodat code voor iedereen herkenbaar en goed leesbaar is. Dat helpt je niet alleen bij de stijl van je code, maar ook bij de keuze van namen voor bijvoorbeeld ID’s en variabelen. Een voorbeeld van zulke richtlijnen voor Android vind je via www.bit.ly/andrguide. In deze cursus volgen we overwegend de richtlijnen. Zo nemen we voor de ID steeds de naam van de component als uitgangspunt, gevolgd door een underscore, zoals text_ voor een TextView, image_ voor een ImageView, button_ voor een Button en tot slot menu_ voor een Menu. De TextView-component waarop we de welkomsttekst laten zien, noemen we daarom text_welkom. Voor een variabele in de code die verwijst naar deze ID zou je dezelfde naam mogen gebruiken. In deze cursus gebruiken we voor de duidelijkheid een andere afgeleide naam, met een hoofdletter in plaats van het underscore-teken als afscheiding, bijvoorbeeld textWelkom.

Bestaande code

Je hebt gezien hoe je voor de TextView-component in je ontwerp de tekst aan kunt passen. De aanpassing kun je ook via code maken tijdens de uitvoering van je app. We laten zien hoe je dat doet. Open het bestand MainActivity.kt via het projectvenster. Dit bestand bevat een eenvoudige basis voor de (enige) activity van deze app, waaronder de volgende regels:

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

}

}

Belangrijk om te weten is dat er verschillende toestanden bestaan waarin een activity kan verkeren. Dit heet ook wel levenscyclus of lifecycle. Je kunt via zogenoemde ‘callbacks’ inhaken op elke (veranderende) toestand. In een van de komende delen gaan we hier uitgebreider op in door de levenscyclus en callbacks met een werkend voorbeeld te demonstreren. Hier gebruiken we zo’n callback voor de belangrijke onCreate() die optreedt zodra onze activity wordt gemaakt. Door hier zelf met sleutelwoord override een functie voor te maken, overschrijf je als het ware de bestaande code, waarbij je met super.onCreate(savedInstanceState) eerst de bestaande code (alsnog) kunt laten uitvoeren. Hierbij is savedInstanceState de bewaarde eerdere toestand van de app. Daaronder kun je dan je eigen aanvullende code schrijven. Je ziet daarin nu alleen de regel setContentView(R.layout.activity_main). Die regel zorgt ervoor dat de gewenste lay-out (in dit geval het bestand activity_main.xml) wordt geladen en op het scherm wordt getoond.

Code toevoegen

Voordat je code gaat schrijven, is het handig om een instelling te wijzigen, zodat de benodigde bibliotheken automatisch worden geïmporteerd als je ze gebruikt in je code (zie het kader ‘Importregels voor bibliotheken’). Vervolgens hoeven we maar twee regels toe te voegen om de tekst te veranderen. Zet de regels direct onder de regel setContentView(). Eerst zoeken we via de in de lay-out toegekende id de TextView-component op en maken we deze beschikbaar via de variabele die we textWelkom noemen:

val textWelkom: TextView = findViewById(R.id.text_welkom) as TextView

Hierna kunnen we eenvoudig de tekst veranderen:

textWelkom.text = "Dit is een live aanpassing!"

Als je geen automatische importregels hebt ingesteld, wordt gevraagd om op Alt+Enter te drukken om de bibliotheken te importeren, die nodig zijn voor deze app. Als je de app start, bijvoorbeeld in de emulator, zie je als het goed is de aangepaste tekst. Je merkt nergens dat de tekst via de code wordt aangepast. Dat is niet omdat het te snel zou gaan om op te vallen, maar omdat de bewuste activity binnen de onCreate() nog niet zichtbaar is gemaakt voor de gebruiker.

©PXimport

Importregels voor bibliotheken

We raden je aan om voor de hand liggende bibliotheken automatisch toe te laten voegen. Om dat in te stellen, ga je naar File / Settings en dan Editor / General / Auto Import. Zet onder Kotlin en Java een vinkje bij Add unambigious imports on the fly. Dat zorgt ervoor dat de importregel automatisch wordt toegevoegd als je bijvoorbeeld de Log-opdracht schrijft. Ook de optie Optimize imports on the fly is handig. Deze instelling zal automatisch de importregels verwijderen voor bibliotheken die je niet meer raadpleegt.

©PXimport

Testen in emulator

Fysiek of virtueel Android-toestel

Om je app te testen heb je een Android-toestel nodig. Je kunt hiervoor een fysiek toestel gebruiken (wat in deel 4 aan bod gaat komen), maar ook een virtueel toestel via de emulator te gebruiken. Die werkt tegenwoordig net zo snel of zelfs sneller dan een ‘echt’ toestel. Doorgaans zul je in de eerste fase van je ontwerp vooral de emulator gebruiken en in de laatste fase – voor het perfectioneren van de app – een echt toestel. Om virtuele toestellen voor de emulator te bekijken en te beheren, open je de AVD (Android Virtual Device) Manager via Tools / AVD Manager.

©PXimport

Virtuele toestellen

Bij een standaardinstallatie heb je een toestelconfiguratie gemaakt voor de Pixel 3a. Als voorbeeld voegen we een virtueel toestel toe via de optie Create Virtual Device. Je ziet dan verdeeld over categorieën als TV, Phone, Wear OS en Tablet allerlei profielen voor bekende apparaten die je als basis voor je virtuele toestel kunt gebruiken, al kun je ook zelf een profiel maken (zie het kader ‘Profielen voor apparaten maken’).

Hier kiezen we onder Phone voor Pixel 4. Zoals je aan het icoontje in de kolom Play Store kunt zien, bevat dit virtuele toestel ook de Google Play Store. Je kunt dus (andere) apps op het toestel installeren vanuit de appstore van Android, net als op een echte telefoon. Klik op Next om verder te gaan.

Nu kun je kiezen welke versie van Android moet worden geïnstalleerd. Onder Recommended zie je aanbevolen releases, maar je kunt ook andere systeem-images kiezen. Dit bepaalt de versie van Android. We gebruiken als voorbeeld de release genaamd Q oftewel Android 10. Klik indien nodig eerst op Download om het systeem-image te downloaden en te installeren. Daarna selecteer je het systeem-image en klik je op Next. Als laatste kun je het toestel een naam geven en een standaard schermoriëntatie kiezen (Portret of Landschap).

Via Show Advanced Settings kun je extra details zien. Zo kies je bij Boot option voor Cold boot als het toestel steeds schoon moet starten, of Quick boot als het verder moet gaan in de toestand waarin je het de laatste keer hebt gebruikt. Klik ten slotte op Finish om de configuratie af te ronden.

©PXimport

Profielen voor apparaten maken

De AVD Manager bevat profielen voor allerlei soorten apparaten, zoals smart-tv’s met Android TV en wearables met Wear OS. Zo’n profiel geeft bijvoorbeeld aan wat de schermgrootte, resolutie en pixeldichtheid zijn, maar ook hoeveel geheugen het apparaat heeft en wat voor sensoren erop zitten. Klik je op New Hardware Profile, dan kun je zo’n profiel zelf helemaal samenstellen. Je kunt bij het maken van een profiel ook een bestaand profiel uit de lijst als uitgangspunt nemen en deze aanpassen. Daarvoor klik je met rechts op een toestel en kies je Clone.

©PXimport

App starten op toestel

Als je het virtuele toestel hebt gemaakt, start je deze vanuit het overzicht door op het groene speelicoontje te klikken. De eerste keer kan het opstarten wat langer duren. Als het toestel is opgestart, kun je het gebruiken zoals een echte Android-smartphone. Zo kun je bijvoorbeeld instellingen veranderen via het instellingenmenu en dankzij de Play Store na inloggen ook aanvullende apps installeren. De emulator zelf geeft je via een knoppenbalk nog diverse extra opties (zie het kader ‘Emulator aanpassen’).

Ga je naar Android Studio, dan selecteer je het toestel in de werkbalk onder Running Devices. Dat kan ook via Run / Select Device (Alt+Shift+F11). Klik je op het groene icoontje (of Shift+F10), dan wordt de app gecompileerd en vervolgens op het virtuele toestel geïnstalleerd en gestart.

Emulator aanpassen

De emulator geeft je een knoppenbalk waarmee je allerlei opties kunt wijzigen. Denk aan het roteren van het scherm of wijzigen van het volume. Via de drie puntjes is een extra menu beschikbaar, waarin je nog veel meer details kunt veranderen. Dat gaat vooral om externe invloeden. Zo kun je bijvoorbeeld de gps-locatie wijzigen, een inkomend gesprek simuleren, de sensoren voor richting, beweging en versnelling beïnvloeden of het soort netwerkverbinding en signaalsterkte wijzigen.

©PXimport

▼ Volgende artikel
Meer tijd, minder gedoe: deze Amazon-deals maken je leven een stuk makkelijker!
© ER | ID.nl
Huis

Meer tijd, minder gedoe: deze Amazon-deals maken je leven een stuk makkelijker!

Klaar voor een serieuze upgrade van je huis en ochtendroutine? Soms zijn er deals die je gewoon niet mag missen. Wij visten de pareltjes uit het Amazon-aanbod: drie premium gadgets die het leven makkelijker én mooier maken. Pak nu tot 42 procent korting op deze absolute publieksfavorieten.

Technologie is op zijn best als je er eigenlijk niet over na hoeft te denken. Als het klusjes uit handen neemt, je helpt om sneller de deur uit te kunnen of zorgt voor een veiliger gevoel. Maar laten we eerlijk zijn: voor die premium kwaliteit betaal je vaak de hoofdprijs.

Tenzij je het juiste moment afwacht.

Op dit moment vind je bij Amazon een aantal opvallend lekkere deals op high-end apparatuur. We hebben drie producten geselecteerd die niet alleen bekendstaan om hun kwaliteit, maar nu ook tijdelijk een wel heel vriendelijk prijskaartje hebben. Van een robot die werkelijk alles zelf doet tot een haarstyler die viral gaat: dit zijn de aanraders!

©Dreame

Dreame L40s Pro Ultra - nooit meer dweilen

Robotstofzuigers zijn er in alle soorten en maten, maar de Dreame L40s Pro Ultra valt in de categorie gamechangers. Dit is geen apparaat waar je alsnog achteraan moet lopen, het is een volledig autonoom schoonmaaksysteem.

Dankzij de MopExtend-technologie reikt de dweilarm tot in de lastigste hoekjes en langs plinten, plekken die standaard robotstofzuigers normaal gesproken overslaan. Hij zuigt met brute kracht (tot 19.000 Pa), dweilt én keert zelf terug naar zijn basisstation. Daar wordt de robot niet alleen geleegd, maar worden de dweilen ook gewassen én met hete lucht gedroogd. Dat laatste is echt wel een dingetje, want het voorkomt nare geurtjes en schimmelvorming. Top dus!

Normaal vergt dit vlaggenschip een forse investering, maar met de huidige deal wordt dit soort luxe ineens een stuk bereikbaarder, want je krijgt nu tijdelijk 35 procent korting op de adviesprijs.

Bekijk de Dreame L40s Pro Ultra bij Amazon

©Shark

Shark FlexStyle 5-in-1 - voor een salonwaardige look

De Shark FlexStyle heeft de beautywereld behoorlijk opgeschud. Het belooft dezelfde veelzijdigheid en resultaten als de bekende concurrentie, maar dan voor een fractie van de prijs. En met de huidige Amazon-actie wordt dat prijsverschil wel érg groot.

Dit is een krachtige haardroger en veelzijdige multistyler in één. Of je nu gaat voor krullen, volume, stijl haar of gewoon snel drogen: met de vijf opzetstukken kan het allemaal. Het belangrijkste pluspunt? Hij gebruikt luchtstroom in plaats van extreme hitte. Hierdoor blijft je haar glanzend en gezond, zelfs als je dagelijks je look verandert. Hij is licht, compact en draait makkelijk om van droger naar styler. Dit is dan ook de klapper van de week met 42 procent korting!

Bekijk de Shark FlexStyle 5-in-1 bij Amazon

©Amazon

Ring Battery Video Doorbell Pro - wie staat er voor de deur?

Een slimme deurbel is vaak de eerste stap naar een slim huis, en de Ring Battery Video Doorbell Pro is in zijn klasse de topkeuze. Het grootste voordeel van dit model is de flexibiliteit: omdat hij op een verwisselbare batterij werkt, installeer je hem binnen enkele minuten op elke gewenste plek, zonder gedoe met bedrading.

De 'Pro'-toevoeging zit 'm in de beeldkwaliteit en functies. Je krijgt haarscherp zicht van top tot teen (Head-to-Toe Video), waardoor je niet alleen gezichten ziet, maar bijvoorbeeld ook pakketjes die voor je deur zijn neergezet. Met functies als 3D-bewegingsdetectie en zicht in kleur (ook 's nachts!) mis je bovendien niets meer. Of je nu op zolder zit of op kantoor bent: je hebt altijd de controle over je voordeur. En het mooie is: je krijgt nu 35 procent korting!

Bekijk de Ring Battery Video Doorbell Pro bij Amazon


Let op: de prijzen en beschikbaarheid bij Amazon kunnen snel veranderen. De genoemde kortingen waren actueel op het moment van publiceren.

▼ Volgende artikel
Opruimen en schoonmaken: zo is je huis écht klaar voor de feestdagen
© Ljupco Smokovski | www.ljsphotographyonline.com
Huis

Opruimen en schoonmaken: zo is je huis écht klaar voor de feestdagen

Het is bijna zover. De feestdagen staan voor de deur. Je kijkt er waarschijnlijk al naar uit: lekker eten, vrienden over de vloer, lekker op de bank een kerstklassieker kijken. Juist nu is het een goed moment om je huis weer even aan te pakken. Met een simpele planning en een paar gerichte schoonmaakklussen maak je je huis in één ochtend klaar voor kerst!

Je hal: opgeruimd = een warm welkom

De hal is de eerste plek die je gasten zien, maar in deze tijd van het jaar is het vaak een verzamelplaats van modderige schoenen, natte jassen en rondslingerende sjaals. Kijk eens kritisch naar je kapstok: hangen daar nog zomerjassen die naar zolder kunnen? Maak ruimte. Zo kunnen je gasten straks hun jas makkelijk kwijt.

Loop meteen even de rest van de hal na: laat alleen de schoenen staan die je dagelijks gebruikt en zet de rest in een kast of opbergbox. Verzamel losse sjaals, mutsen en handschoenen in een mand bij de deur. Even de vloer stofzuigen en dweilen en de spiegel en voordeur afnemen met een vochtige doek en je bent klaar. Een goede droogloopmat is in dit seizoen trouwens geen overbodige luxe; het vangt het meeste vuil op voordat het je woonkamer kan bereiken. Dit klusje kost je hooguit een kwartiertje, maar maakt écht verschil voor de sfeer in huis.

Je woonkamer: stof is echt niet feestelijk

In de woonkamer staat waarschijnlijk de verwarming lekker aan. De warme lucht zorgt voor luchtstroming, waardoor stof eerder gaat zweven en je het sneller overal terugziet. Voor je het weet ligt er een grijzig laagje op je plinten en vensterbanken. Niet zo feestelijk. Pak de stofzuiger en gebruik een klein opzetstuk, zoals de kierenzuigmond of meubelborstel. Daarmee kom je eindelijk goed tussen de lamellen van de radiator of achter die ene kast.

Heb je een robotstofzuiger? Laat die dan dagelijks zijn rondje rijden terwijl jij iets anders doet. Vergeet niet om af en toe de filters van je apparaten te controleren. Een vies filter blaast die muffe lucht namelijk net zo hard weer terug. Spoel ze uit en laat ze minstens 24 uur drogen. Een vochtig filter kan de motor beschadigen en dat wil je niet.

Lees ook: Van parketborstel tot turbobrush: zo gebruik je de zuigmonden van je stofzuiger

Vergeet je afstandsbediening niet!

De afstandsbediening is misschien wel het vieste voorwerp in huis. Maak hem schoon met een beetje alcohol of een desinfecterend doekje (ook tussen de knopjes!). Dan kun je weer heerlijk zappen en kerstklassiekers kijken deze dagen! 👇

Watch on YouTube

De keuken: korte metten met vet

In de keuken wordt de komende dagen waarschijnlijk flink gekookt. Vet en kookdampen slaan helaas overal neer. Kijk maar eens kritisch naar je afzuigkap; die vangt de meeste viezigheid op. Haal de roosters los en zet ze in een warm sopje met een flinke scheut ontvetter. Laat ze rustig een half uurtje weken. Heb je een recirculatiekap, vervang dan nu het koolstoffilter zodat geurtjes echt weg blijven.

Terwijl de roosters weken, heb je mooi tijd om de kastjes aan te pakken. Warm water en een beetje afwasmiddel werken vaak het best. Wees voorzichtig met een middel als baking soda. Dat kan krassen veroorzaken, met name op keukens met een hoogglans of juist heel matte, krasgevoelige afwerking. Het is daarom altijd slim om zo'n schoonmaakmiddel eerst te testen op een onopvallend plekje (bijvoorbeeld aan de binnenkant van een deurtje) voordat je het op het zichtbare deel gebruikt.

©ID.nl

Ho ho ho: denk ook aan je toilet!

Vergeet het kleinste kamertje niet! Juist als er gasten komen, wil je dat het toilet fris is. Een snelle poetsbeurt met chloor is vaak niet genoeg om hardnekkige kalkaanslag onder de rand of in de pot weg te krijgen. Gebruik hiervoor een krachtige ontkalker of schoonmaakazijn en laat dit gerust een nachtje intrekken voor het beste resultaat. Denk ook om de deurklink en het lichtknopje; die worden vaker aangeraakt dan je denkt. Door het toilet nu grondig schoon te maken, hoef je vlak voor het kerstdiner alleen nog maar even snel een doekje over de bril te halen.

Wil je dat het toilet niet alleen schoon is, maar ook naar kerst ruikt? Zet dan een klein vaasje neer met een paar verse dennentakjes en een takje hulst met rode bessen. Dit ziet er direct feestelijk uit en verspreidt een subtiele bosgeur. Of prik kruidnagels in een sinaasappel en hang die op. Ruikt niet alleen heel kerstig, maar neutraliseert ook nog eens ongewenste geurtjes.

Bankhoezen en gordijnen: vergeten geurvangers

Soms heb je alles gepoetst en geboend, maar ruikt het huis nog steeds niet helemaal fris. Daar is een simpele verklaring voor. Juist in het najaar houden we ramen vaker dicht, waardoor geurtjes in je gordijnen, plaids en kussenhoezen trekken. Alles wat in de wasmachine mag, draai je daarom het beste even op een kort programma. Wat niet of moeilijk in de machine kan (zoals gordijnen of de vaste bekleding van je bank) kun je een handstomer gebruiken. De hete stoom doodt bacteriën en verwijdert geurtjes.

©ID.nl

Schone lucht in huis

Je huis is pas echt schoon wanneer ook de lucht schoon is.  In het najaar is het binnen vaak vochtiger, omdat we de ramen vaker dicht laten maar wel net zo vaak douchen, wassen en koken. Zet daarom elke dag de ramen tien minuten tegen elkaar open. Die stroom frisse buitenlucht doet wonderen. Merk je dat het vochtig of muf blijft? Dan kan een luchtontvochtiger of luchtreiniger uitkomst bieden. Voor hardnekkige kookluchtjes kies je het beste een reiniger met een actief koolstoffilter. Zo voorkom je beslagen ramen en blijft het binnenklimaat gezond, ook als straks de hele familie over de vloer komt.

Lees ook: Waarom je luchtreiniger in de herfst meer doet dan je denkt