Android Apps Maken

Uit Aureus Beta
Naar navigatie springen Naar zoeken springen

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:

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 met android: 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.whatsapp
  • android: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, als android:versionCode 125 is, dan is de naam bijvoorbeeld 'Beta 12.5', maar het kan ook iets zijn wat totaal niet lijkt op android: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