Android Apps Maken: verschil tussen versies
(3 tussenliggende versies door een andere gebruiker niet weergegeven) | |||
Regel 68: | Regel 68: | ||
==Les 3: Activities== | ==Les 3: Activities== | ||
− | Activities worden bij gewone apps het meest gebruikt. Elke activity die je gebruikt, moet je in de AndroidManifest.xml. | + | ===Definiëren=== |
+ | Activities worden bij gewone apps het meest gebruikt. Elke activity die je gebruikt, moet je in de AndroidManifest.xml opgeven. | ||
<br> | <br> | ||
Een activity definieer je binnen de <code><application></code>-tag. Dat doe je zo: | Een activity definieer je binnen de <code><application></code>-tag. Dat doe je zo: | ||
− | < | + | <syntaxhighlight lang="xml" line="line"> |
<application | <application | ||
... | ... | ||
Regel 81: | Regel 82: | ||
</application> | </application> | ||
− | </ | + | </syntaxhighlight> |
− | Hierna kan je de activity gebruiken. | + | Hierna kan je de activity gebruiken, anders krijg je een error: Activity not Found. |
<br> | <br> | ||
Als je wilt dat je de activity kan opstarten vanaf je homescreen, dan moet je de volgende activity toevoegen: | Als je wilt dat je de activity kan opstarten vanaf je homescreen, dan moet je de volgende activity toevoegen: | ||
− | < | + | <syntaxhighlight lang="xml" line="line"> |
<application | <application | ||
... | ... | ||
Regel 104: | Regel 105: | ||
</application> | </application> | ||
− | </ | + | </syntaxhighlight> |
Je hebt nu een Intent Filter toegevoegd. Dit filter zorgt ervoor dat de activity wordt gestart, als het filter aan bepaalde voorwaarden voldoet. In dit geval, als je app is opgestart via het homescreen. | Je hebt nu een Intent Filter toegevoegd. Dit filter zorgt ervoor dat de activity wordt gestart, als het filter aan bepaalde voorwaarden voldoet. In dit geval, als je app is opgestart via het homescreen. | ||
+ | Voeg je meer activities toe met hetzelfde Intent Filter (in dit geval voor homescreen), dan heb je de keuze welke activity je opstart. In dit geval zorgt <code>activity:label</code> ervoor welke naam er komt te staan bij het app icoontje. Het app-icoontje zelf definieer je met <code>activity:icon="@drawable/ic_naamVanIcon"</code>. | ||
<br> | <br> | ||
Het class-pad is de locatie waar je activity staat. Als je activity staat bij <code>com.example.app.MainActivity</code> en de <code>package</code> is <code>com.example.app</code>, dan kan je een relatief class-pad gebruiken, namelijk <code>.MainActivity</code>, anders moet je het volledige pad opgeven. | Het class-pad is de locatie waar je activity staat. Als je activity staat bij <code>com.example.app.MainActivity</code> en de <code>package</code> is <code>com.example.app</code>, dan kan je een relatief class-pad gebruiken, namelijk <code>.MainActivity</code>, anders moet je het volledige pad opgeven. | ||
<br> | <br> | ||
− | Nadat we de activity hebben gedefinieerd, kunnen we de activity zelf maken. Dit gebeurt in Java. Zoals hierboven maken we de <code>com.example.app.MainActivity</code> aan, als | + | Nadat we de activity hebben gedefinieerd, kunnen we de activity zelf maken. Dit gebeurt in Java. Als de activity nog niet bestaat, moet je hem aanmaken. Zoals hierboven maken we de <code>com.example.app.MainActivity</code> aan.<br> |
+ | Alle JAVA-bestanden staan in de map <code>src/</code> (Eclipse) of <code>java/</code> (Android Studeo (Gradle)). | ||
+ | In dit geval maak je een bestand aan met de naam <code>MainActivity.java</code> in de map <code>src/com/example/app/</code> of <code>java/com/example/app/</code>. | ||
+ | |||
+ | ===Maken=== | ||
+ | Nu het bestand is aangemaakt, gaan we het bewerken. | ||
+ | |||
+ | Als bestand leeg is type je op de eerste regel: | ||
+ | <syntaxhighlight lang="java" line="line"> | ||
+ | package com.example.app; | ||
+ | </syntaxhighlight> | ||
+ | Dit geeft aan in welke package de JAVA-class zit. LET OP: Dit hoeft niet hetzelfde te zijn als in de AndroidManifest.xml. | ||
+ | |||
+ | Vervolgens gaan we de class zelf maken: | ||
+ | <syntaxhighlight lang="java" line="line"> | ||
+ | package com.example.app; | ||
+ | |||
+ | public class MainActivity{ | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | Het probleem is dat dit nu nog geen activity is. | ||
+ | Je zal dus een error krijgen. | ||
+ | |||
+ | Zo maak je er geen activity van: | ||
+ | <syntaxhighlight lang="java" line="line"> | ||
+ | package com.example.app; | ||
+ | |||
+ | import android.app.Activity; | ||
+ | |||
+ | public class MainActivity extends Activity{ | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | De import geeft aan welke JAVA-classes je gebruikt. | ||
+ | (Soms hebben classes dezelfde naam maar bevinden ze zich in een andere package: <code>com.example.app.Test</code> en <code>org.mijnpackage.kaas.Test</code>.) | ||
+ | In dit geval gebruiken we de class <code>Activity</code> uit <code>android.app</code>. | ||
+ | De niet-gebruikte imports worden vaak geel onderstreept. | ||
+ | |||
+ | Nu kan de activity opgestart worden. | ||
+ | Het enige wat je nu ziet is: | ||
+ | - De titel (opgegeven in AndroidManifest) | ||
+ | - Eventueel het icoontje (opgegeven in AndroidManifest) | ||
+ | - Een leeg scherm in het opgegeven thema of standaard thema (opgegeven in AndroidManifest) | ||
+ | |||
+ | Dat is niet veel. | ||
+ | Om iets te laten zien gaan we ###onCreate | ||
+ | |||
+ | [[Category:Tutorials]] |
Huidige versie van 11 aug 2018 om 10:44
Hier wordt uitgelegd hoe je een Android-app maakt. Android is een bekend besturingssysteem (OS), dat op vele telefoons staat. Voor dit besturingssysteem kan je apps maken, die je vervolgens kan installeren en gebruiken. Als app-ontwikkelaar kan je de app uploaden naar Google Play, zodat ook anderen de app kunnen gebruiken.
Inhoud
Voorkennis
Android-apps schrijf je in Java en XML. Om een app te kunnen schrijven is het dus handig als je weet hoe Java en XML in elkaar zitten. Hieronder vindt je enkele links waarin het wordt uitgelegd:
- Learning the Java Language (Java)
- Object-Oriented Programming Concepts (Java)
- XML (XML)
Les 1: Een Android-Project maken
Hierin wordt er uitgelegd hoe je nieuwe Android-app Projecten aanmaakt.
Les 2: AndroidManifest.xml
Afhankelijk van de IDE die je gebruikt, zal je project-omgeving er verschillend uitzien. Over het algemeen worden vaak de volgende bestanden automatisch aangemaakt:
- AndroidManifest.xml
- MainActivity.java
- activity_main.xml (of main.xml)
De AndroidManifest is verplicht. Zonder manifest-bestand, kan je de app niet genereren. Als je het bestand opent, ziet het er ongeveer zo uit:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android"
android:versionCode="1"
android:versionName="1.0">
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.App">
<activity
android:name="com.example.android.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action
android:name="android.intent.action.MAIN"/>
<category
android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
De <manifest>-tag heeft 4 atrributen:
xmlns:android
geeft informatie aan over de andere attributen die metandroid:
beginnen.package
geeft het ID van je app. Elke app heeft een ander package-ID. Het package-ID van WhatsApp is bijvoorbeeld 'com.whatsapp' en op de Google Play Store vindt je WhatsApp dus hier: https://play.google.com/store/apps/details?id=com.whatsappandroid:versionCode
is de versie van je app in een getal. Elke keer als het getal groter is dan de vorige versie van de app, dan geeft Google Play Store een melding dat er een nieuwe versie beschikbaar is.android:versionName
is de versie van je app in een zin, alsandroid:versionCode
125 is, dan is de naam bijvoorbeeld 'Beta 12.5', maar het kan ook iets zijn wat totaal niet lijkt opandroid:versionCode
.
Binnen de <manifest>
-tag staat de <application>
-tag. Ook deze tag heeft een aantal attributen:
android:icon
is een android-pad naar het icoontje van de app.@drawable/ic_launcher
verwijst naar ongeveer de volgende map:/res/drawable/ic_launcher.png
.android:label
is de naam van je app.android:theme
is een thema voor je app.- en wat andere (nu onbelangrijke) attributen.
Binnen de <application>
-tag, staat nu maar 1 andere tag, de <activity>
-tag. Behalve deze tag, kunnen er ook andere tags instaan. Hier staan de belangrijkste op een rijtje:
<activity>
: Een onderdeel van je app die je echt op je scherm ziet.<service>
: Een achtergrondproces die je niet op het scherm ziet.<receiver>
: Een onderdeel die kan worden opgestart als er iets op het systeem gebeurt.<provider>
In de volgende les gaan we verder in op de <activity>
-tag.
Les 3: Activities
Definiëren
Activities worden bij gewone apps het meest gebruikt. Elke activity die je gebruikt, moet je in de AndroidManifest.xml opgeven.
Een activity definieer je binnen de <application>
-tag. Dat doe je zo:
<application
...
>
<activity
android:label="Een titel voor je activity, die je in de titelbalk ziet"
android:name="Het class-pad naar de activity"/>
</application>
Hierna kan je de activity gebruiken, anders krijg je een error: Activity not Found.
Als je wilt dat je de activity kan opstarten vanaf je homescreen, dan moet je de volgende activity toevoegen:
<application
...
>
<activity
android:label="Een titel voor je activity, die je in de titelbalk ziet"
android:name="Het class-pad naar de activity">
<intent-filter>
<action
android:name="android.intent.action.MAIN"/>
<category
android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
Je hebt nu een Intent Filter toegevoegd. Dit filter zorgt ervoor dat de activity wordt gestart, als het filter aan bepaalde voorwaarden voldoet. In dit geval, als je app is opgestart via het homescreen.
Voeg je meer activities toe met hetzelfde Intent Filter (in dit geval voor homescreen), dan heb je de keuze welke activity je opstart. In dit geval zorgt activity:label
ervoor welke naam er komt te staan bij het app icoontje. Het app-icoontje zelf definieer je met activity:icon="@drawable/ic_naamVanIcon"
.
Het class-pad is de locatie waar je activity staat. Als je activity staat bij com.example.app.MainActivity
en de package
is com.example.app
, dan kan je een relatief class-pad gebruiken, namelijk .MainActivity
, anders moet je het volledige pad opgeven.
Nadat we de activity hebben gedefinieerd, kunnen we de activity zelf maken. Dit gebeurt in Java. Als de activity nog niet bestaat, moet je hem aanmaken. Zoals hierboven maken we de com.example.app.MainActivity
aan.
Alle JAVA-bestanden staan in de map src/
(Eclipse) of java/
(Android Studeo (Gradle)).
In dit geval maak je een bestand aan met de naam MainActivity.java
in de map src/com/example/app/
of java/com/example/app/
.
Maken
Nu het bestand is aangemaakt, gaan we het bewerken.
Als bestand leeg is type je op de eerste regel:
package com.example.app;
Dit geeft aan in welke package de JAVA-class zit. LET OP: Dit hoeft niet hetzelfde te zijn als in de AndroidManifest.xml.
Vervolgens gaan we de class zelf maken:
package com.example.app;
public class MainActivity{
}
Het probleem is dat dit nu nog geen activity is. Je zal dus een error krijgen.
Zo maak je er geen activity van:
package com.example.app;
import android.app.Activity;
public class MainActivity extends Activity{
}
De import geeft aan welke JAVA-classes je gebruikt.
(Soms hebben classes dezelfde naam maar bevinden ze zich in een andere package: com.example.app.Test
en org.mijnpackage.kaas.Test
.)
In dit geval gebruiken we de class Activity
uit android.app
.
De niet-gebruikte imports worden vaak geel onderstreept.
Nu kan de activity opgestart worden. Het enige wat je nu ziet is:
- De titel (opgegeven in AndroidManifest) - Eventueel het icoontje (opgegeven in AndroidManifest) - Een leeg scherm in het opgegeven thema of standaard thema (opgegeven in AndroidManifest)
Dat is niet veel. Om iets te laten zien gaan we ###onCreate