ListView Spinner Button TextView EditText Radiogroup GridView ViewPager Tabbladen...

Save this PDF as:
 WORD  PNG  TXT  JPG

Maat: px
Weergave met pagina beginnen:

Download "ListView Spinner Button TextView EditText Radiogroup GridView ViewPager Tabbladen..."

Transcriptie

1 Android UI componenten 1/41 UI componenten Inhoud ListView... 2 Spinner... 9 Button TextView EditText Radiogroup GridView ViewPager Tabbladen NavigationDrawer AlertDialog Imageview WebView OptionsMenu DatePickerDialog CalendarView Toast... 40

2 2/41 Android UI componenten UI componenten De gebruikersinterface (User Interface) in Android wordt opgebouwd met Views en Viewgroups. Een View is een specifiek onderdeel van het scherm zoals bvb. een lijst, een keuzelijst, een knop, een tekstvak, een label, een afbeelding, een grid, enz Een Viewgroup kan een aantal Views bevatten. Zo kan je bvb. in een LinearLayout een label, een tekstvak, een knop en lijst opnemen. De positie van de Views kan bepaald worden door de attributen van de Viewgroup. Zo kan het oriëntatie-attribuut van een LinearLayout aangeven dat de Views onder mekaar moeten verschijnen (android:orientation="vertical") of achter mekaar moeten verschijnen (android:orientation="horizontal"). ListView In dit voorbeeld wordt een ListView getoond op het startscherm van de app. In de source code wordt de "activity_main" layout niet gebruikt en wordt met de functie setlistadapter(mijnadapter) aangegeven dat de inhoud van de "adapter" op het scherm moet getoond worden. De activiteit is afgeleid van een ListActivity. De regels in de lijst gebruiken als standaard layout (per regel) de Android gedefinieerde layout "simple_list_item_1". De gegevens komen uit de String array "waarden". De "ArrayAdapter" zorgt dus voor de koppeling tussen de gegevens uit de array en de layout van de lijst. Als de gebruiker op een item van de lijst klikt met de muis in de emulator (AVD) of met de vinger een item aanduidt op een tablet of smartphone dan wordt de functie "onlistitemclick()" uitgevoerd. In het voorbeeld wordt dan voor het eerste item (Klanten) een nieuwe activiteit opgestart (met een "intent"). package com.android.listactiviteit;

3 Android UI componenten 3/41 import android.app.listactivity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.listview; import android.widget.toast; public class MainActivity extends ListActivity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //setcontentview(r.layout.activity_main); String[] waarden = new String[] {"Klanten","Leveranciers","Bestellingen","Betalingen","Producten" ; ArrayAdapter<String> mijnadapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,waarden); setlistadapter(mijnadapter); protected void onlistitemclick(listview l, View v, int position, long id) { String item = (String) getlistadapter().getitem(position); //Toast.makeText(this, item + " geselecteerd", Toast.LENGTH_LONG).show(); if (position == 0) { // klanten Intent in1 = new Intent(this,Klanten.class); startactivity(in1); In de Klanten activiteit kunnen gegevens ingegeven worden en worden die gegevens toegevoegd aan een lijst. De lijst is hier een onderdeel van een gewone activiteit. package com.android.listactiviteit; import java.util.arraylist; import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.button; import android.widget.edittext; import android.widget.listview; import android.widget.adapterview.onitemclicklistener; import android.widget.toast; public class Klanten extends Activity { private Button btn1; private ListView lvcontacten; private ArrayList<String> lvstrings = new ArrayList<String>(); private ArrayAdapter<String> lvadapter; private EditText etnaam; private EditText ettelefoon; private EditText et ; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.klanten); btn1 = (Button) findviewbyid(r.id.button1); btn1.setonclicklistener(btn1klik); etnaam = (EditText) findviewbyid(r.id.et_contacten_naam);

4 4/41 Android UI componenten ettelefoon = (EditText) findviewbyid(r.id.et_contacten_telefoon); et = (EditText) findviewbyid(r.id.et_contacten_ ); OnClickListener btn1klik = new OnClickListener() { public void onclick(view v) { // opvullen adapter en koppelen aan listview vulop(); ; public void vulop() { lvcontacten = (ListView) findviewbyid(r.id.lv_contacten); lvadapter = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, lvstrings); lvadapter.add(etnaam.gettext().tostring() + " " + ettelefoon.gettext().tostring() + " " + et .gettext().tostring()); lvcontacten.setadapter(lvadapter); lvcontacten.setonitemclicklistener(lvitemclick); etnaam.settext(""); ettelefoon.settext(""); et .settext(""); OnItemClickListener lvitemclick = new OnItemClickListener() { public void onitemclick(adapterview<?> parent, View view, int position, long id) { String item = (String) lvadapter.getitem(position); String naam = item.substring(0, item.indexof(" ")); Toast.makeText(getApplicationContext(), naam, Toast.LENGTH_SHORT).show(); ; En de layout van het Klanten scherm ziet er als volgt uit: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:text="naam: " android:textstyle="bold" /> <EditText > </EditText> </LinearLayout> <LinearLayout android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:text="telefoon: " android:textstyle="bold" />

5 Android UI componenten 5/41 <EditText > </EditText> </LinearLayout> <LinearLayout android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:text=" " android:textstyle="bold" /> <EditText android:layout_width="296dp" android:layout_weight="0.95" > </EditText> <Button android:layout_width="wrap_content" android:text="toevoegen" /> </LinearLayout> <LinearLayout android:orientation="vertical" > <ListView > </ListView> </LinearLayout> </LinearLayout> Als je meer dan 1 activiteit in jouw app gebruikt dan moet je dat ook aangeven in het Android manifest bestand. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.listactiviteit" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="15" android:targetsdkversion="17" /> <application android:allowbackup="true" > <activity android:name="com.android.listactiviteit.mainactivity" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity>

6 6/41 Android UI componenten <activity android:name="com.android.listactiviteit.klanten" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> De functie setlistadapter() van een ListActivity en de functie setadapter() van een Listview (lvcontacten.setadapter(lvadapter);) gebruiken een "adapter". Een adapter kan op verschillende manieren opgevuld worden. Enkele voorbeelden: 1) Een array van strings die vooraf gedefinieerd is. // declaraties private ListView lvlijst; private ArrayAdapter<String> lvadapter; public static final String[] scheesestrings = { "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi", "Xanadu", "Xynotyro", "Yarg Cornish", "Yarra Valley Pyramid", "Yorkshire Blue", "Xanadu", "Xynotyro", "Yarg Cornish", "Yarra Valley Pyramid", "Yorkshire Blue", "Xanadu", "Xynotyro", "Yarg Cornish", "Yarra Valley Pyramid", "Yorkshire Blue", "Zamorano", "Zanetti Grana Padano", "Zanetti Parmigiano Reggiano" ; // in de oncreate functie lvlijst = new ListView(this); // een vaste array van strings om de adapter op te vullen lvadapter = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, scheesestrings); lvlijst.setonitemclicklistener(lvitemclick); lvlijst.setadapter(lvadapter); setcontentview(lvlijst); 2) Een array van "Character Sequences" (strings) die gedefinieerd is in "strings.xml" (res/values).

7 Android UI componenten 7/41 // declaraties private ListView lvlijst; private ArrayAdapter<CharSequence> lvadapter; // in de oncreate functie lvlijst = new ListView(this); // een array van character sequences (strings) die gedefinieerd is in strings.xml (res/values) lvadapter = ArrayAdapter.createFromResource(this, R.array.leerlingen_list, android.r.layout.simple_list_item_1); lvlijst.setonitemclicklistener(lvitemclick); lvlijst.setadapter(lvadapter); setcontentview(lvlijst); De "R.array.leerlingen_list" inhoud wordt als volgt gedefinieerd. <string-array name="leerlingen_list"> <item>jan</item> <item>piet</item> <item>joris</item> <item>korneel</item> <item>anna</item> <item>linda</item> <item>paul</item> <item>peter</item> <item>cindy</item> </string-array> 3) Een lege arraylist van strings die opgevuld wordt met de methode "add()" van de adapter. // declaraties private ListView lvlijst; private ArrayAdapter<String> lvadapter; private ArrayList<String> lvstrings = new ArrayList<String>(); // in de oncreate functie lvlijst = new ListView(this); //lvstrings :een lege arraylist van strings die opgevuld wordt met de methode add van de adapter lvadapter = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, lvstrings); lvadapter.add("item 1"); lvadapter.add("item 2"); lvadapter.add("item 3"); lvlijst.setonitemclicklistener(lvitemclick); lvlijst.setadapter(lvadapter); setcontentview(lvlijst);

8 8/41 Android UI componenten 4) Items ophalen uit een database en in de "SimpleCursorAdapter" stoppen met de eigen gemaakte functie getitems(). // declaraties public static final int ADD_ITEM = 0; private static final int ENDAPP = 1; private DBAdapter mdbhelper; private int mitemnumber = 1; private ListView lvlijst; private SimpleCursorAdapter lvadapter; // in de oncreate functie lvlijst = new ListView(this); mdbhelper = new DBAdapter(this); mdbhelper.open(); lvadapter = getitems(); lvlijst.setonitemclicklistener(lvitemclick); lvlijst.setadapter(lvadapter); setcontentview(lvlijst); public boolean oncreateoptionsmenu(menu mnoptions) { mnoptions.add(0,add_item,0,r.string.add_item); mnoptions.add(0,endapp,0,r.string.endapp); return true; public boolean onoptionsitemselected(menuitem item) { switch (item.getitemid()) { case ADD_ITEM: createitem(); return true; case ENDAPP: finish(); return true; return super.onoptionsitemselected(item); private void createitem() { String itemname = "Item LVvoorbeeld: " + mitemnumber++; mdbhelper.createitem(itemname); lvadapter = getitems(); private SimpleCursorAdapter getitems() { Cursor cur = mdbhelper.fetchallitems();

9 Android UI componenten 9/41 startmanagingcursor(cur); String[] van = new String[] { DBAdapter.KEY_ITEMS_NAME ; int[] naar = new int[] { R.id.text1 ; SimpleCursorAdapter items = new SimpleCursorAdapter(this, R.layout.items_row, cur, van, naar); return items; De uitleg over het gebruik van een database volgt in een volgend hoofdstuk. Spinner Een "Spinner" in Android is eigenlijk een keuzelijst (of "dropdownlist"). De werking is te vergelijken met een ListView. Er wordt ook een "Adapter" gebruikt om de gegevens in de lijst te zetten. Er is een standaard layout gedefinieerd in Android om de gegevens te tonen namelijk "simple_spinner_item". // bibliotheken import android.widget.spinner; // declaraties private Spinner spitems; private ArrayList<String> spstrings = new ArrayList<String>(); private ArrayAdapter<String> spadapter; // in de oncreate functie // spinner invullen spitems = (Spinner) findviewbyid(r.id.spinner1); spadapter = new ArrayAdapter<String>(this, android.r.layout.simple_spinner_item, spstrings); spadapter.add("spitem 1"); spadapter.add("spitem 2"); spadapter.add("spitem 3"); spitems.setadapter(spadapter); spitems.setselection(0); spitems.setonitemselectedlistener(spselected); // spinner selectie OnItemSelectedListener spselected = new AdapterView.OnItemSelectedListener() { public void onitemselected(adapterview<?> adapterview, View view, int i, long l) { Toast.makeText(getApplicationContext(), "spinner item " + String.valueOf(i), Toast.LENGTH_LONG).show();

10 10/41 Android UI componenten public void onnothingselected(adapterview<?> adapterview) { return; ; <Spinner android:layout_width="100dp" android:layout_weight="0.17" /> Om een "Spinner" te openen klik of tap je op het weergegeven item. Het eerste item uit de lijst heeft het volgnummer 0 omdat het eerste item uit de gebruikte array steeds de index 0 heeft. Net als bij een ListView kan er een schuifbalk verschijnen en kan je door omhoog of omlaag te "swipen" de regels van de lijst verplaatsen. Button Voor elke button moet een "onclicklistener()" functie gedefinieerd worden. Als de gebruiker op de button klikt of tapt dan wordt de code in de "onclicklistener()" functie uitgevoerd. In het voorbeeld wordt een melding op het scherm getoond. // bibliotheken import android.widget.button; // declaraties private Button btn1; private Button btn2; // in de oncreate functie // buttons clicks btn1 = (Button) findviewbyid(r.id.button1); btn1.setonclicklistener(button1click); btn2 = (Button) findviewbyid(r.id.button2); btn2.setonclicklistener(button2click); // button1 click OnClickListener button1click = new OnClickListener() { public void onclick(view v) { Toast.makeText(getApplicationContext(), "button1 geklikt!", Toast.LENGTH_LONG).show(); ; // button2 click OnClickListener button2click = new OnClickListener() { public void onclick(view v) { Toast.makeText(getApplicationContext(), "button2 geklikt!", Toast.LENGTH_LONG).show(); ; Een "Button" kan eenvoudig gedefinieerd worden in de layout met de "<Button>" markering in het "activity_main.xml" bestand. <LinearLayout android:orientation="horizontal"

11 Android UI componenten 11/41 android:layout_height="200dp" > <Button android:layout_width="wrap_content" android:layout_gravity="center_horizontal" android:text="button1" /> <Button android:layout_width="wrap_content" android:layout_gravity="center_horizontal" android:text="button2" /> </LinearLayout> Een button kan ook een ander uitzicht hebben. Zo kan je bvb. de achtergrond instellen met een kleur. <LinearLayout android:layout_height="50dp" android:orientation="horizontal" > <EditText android:layout_width="450dp" android:layout_height="50dp" android:layout_weight="0.50" android:paddingleft="5dp" android:ems="10" android:textstyle="bold" > </EditText> <Button android:layout_width="wrap_content" android:layout_height="50dp" android:layout_gravity="center_horizontal" android:text="go" /> </LinearLayout> En in de "onclicklistener()" functie kan je de webpagina laten ophalen waarvan de URL vermeld is in het tekstvak aangeduid met "edittext3". OnClickListener btngoclick = new OnClickListener() { public void onclick(view v) { eturl = (EditText) getactivity().findviewbyid(r.id.edittext3); eturl.requestfocus(); LoadWebPageASYNC task = new LoadWebPageASYNC(); task.execute(new String[] { eturl.gettext().tostring() ); ;

12 12/41 Android UI componenten TextView Een "TextView" kan je in Android gebruiken om vaste tekst op het scherm te plaatsen. Je kan het ook een "label" noemen. In Android Studio kan je in het ontwerp ("Design") venster kiezen uit 4 "TextViews". Met het attribuut "android:textappearance" kan je het uitzicht van de tekst wijzigen. <TextView android:layout_width="100dp" android:text="large Text" android:textappearance="?android:attr/textappearancelarge" /> Je kan de inhoud van een "TextView" in de code ook wijzigen. Je gebruikt dan de "settext()" functie van de "TextView". // declaraties private TextView tekst; // in de oncreate functie tekst = (TextView) findviewbyid(r.id.textview1); tekst.settext("nieuwe grote tekst"); EditText Een "EditText" is een tekst "invulvak" in Android. Er zijn verschillende soorten "EditText" views elk met zijn specifieke eigenschappen.

13 Android UI componenten 13/41 In de code kan je net zoals bij een TextView verwijzen naar de layout. In het voorbeeld gebeurt dit in de "onactivitycreated()" functie van het fragment. // bibliotheken import android.widget.edittext; // declaraties private EditText etnaam; private EditText etlocatie; // in de onactivitycreated functie van het fragment etnaam = (EditText) getactivity().findviewbyid(r.id.et_activiteiten_naam); etlocatie = (EditText) getactivity().findviewbyid(r.id.et_activiteiten_locatie); In een aparte eigen geschreven functie kan je dan controleren of de inhoud van de "EditText" view leeg is. if (etnaam.gettext().tostring() == null etnaam.gettext().tostring().trim().length() == 0) { Toast.makeText(getActivity(), "Naam is leeg!", Toast.LENGTH_SHORT).show(); return false; if (etlocatie.gettext().tostring() == null etlocatie.gettext().tostring().trim().length() == 0) { Toast.makeText(getActivity(), "Locatie is leeg!", Toast.LENGTH_SHORT).show(); return false; Je kan de tekstvakken leegmaken met de "settext()" functie van de "EditText" view. Met de functie "requestfocus()" wordt de invoegpositie ("cursor") op de "EditText" view geplaatst. etnaam.settext(""); etlocatie.settext(""); etnaam.requestfocus(); Uiteraard kan je met de "settext()" functie de invulvakken invullen. etnaam.settext(activiteit.getnaam()); etlocatie.settext(activiteit.getlocatie()); Je kan de inhoud van de invulvakken ophalen met de "gettext()" functie. Met de "tostring()" functie kan je er zeker van zijn dat er een "String" wordt gebruikt. objactiviteit = new Activiteit(etnaam.getText().toString(), etlocatie.gettext().tostring(), newdate, newdate,etoms.gettext().tostring()); <LinearLayout android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:text="naam: " android:textstyle="bold" /> <EditText > </EditText> </LinearLayout> <LinearLayout

14 14/41 Android UI componenten android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:text="locatie: " android:textstyle="bold" /> <EditText > </EditText> </LinearLayout> Radiogroup Een "Radiogroup" kan een aantal "RadioButtons" bevatten. Uit de lijst van "RadioButtons" wordt er 1 bolletje gezet als op de "RadioButton" wordt geklikt of getapt. Je kan de buttons ook een eigen uitzicht geven. In het voorbeeld hieronder wordt de rand van de "RadioButton" lichtblauw gekleurd als de knop geselecteerd is. Om dit effect te bekomen werd er hier gebruik gemaakt van een "Selector" en een "Shape" in de XML bestanden in de map "res/drawable". "rbachtergrond.xml" <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:state_pressed="true" /> <item android:state_pressed="true" /> <item android:state_checked="true" /> <item /> </selector>

15 Android UI componenten 15/41 "rbnormaal.xml" <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners android:radius="5dp" /> <solid android:color="#fff" /> <stroke android:width="5dp" android:color="#555555" /> </shape> "rbselected.xml" <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners android:radius="5dp" /> <solid android:color="#fff" /> <stroke android:width="5dp" android:color="#53aade" /> </shape> In de source code wordt de setoncheckedchangelistener() functie geïmplementeerd. De oncheckedchanged() functie bevat de code die moet uitgevoerd worden als de status van een "RadioButton" gewijzigd werd. // bibliotheken import android.widget.radiobutton; import android.widget.radiogroup; // declaraties RadioGroup rgtalen; // in de onactivitycreated functie van het fragment rgtalen = (RadioGroup) getactivity().findviewbyid(r.id.radiogroup1); rgtalen.setoncheckedchangelistener(new android.widget.radiogroup.oncheckedchangelistener() { public void oncheckedchanged(radiogroup arg0, int arg1) { RadioButton selectedrb = (RadioButton) getactivity().findviewbyid(rgtalen.getcheckedradiobuttonid()); String taal = selectedrb.gettext().tostring(); int catnum; categorieid = categoriesids.get(positie); if (categorieid.tostring() == null categorieid.tostring().trim().length() == 0) { catnum = 0; else { catnum = Integer.valueOf(categorieid); switch (taal.trim()) { case "Nederlands": lvadapter = getvertalingenlistpercat(catnum); lvitems.setadapter(lvadapter); break; case "Engels": lvadapter = getvertalingenengels(catnum); lvitems.setadapter(lvadapter); break; case "Thais": lvadapter = getvertalingenthais(catnum);

16 16/41 Android UI componenten lvitems.setadapter(lvadapter); break; ); In de layout worden de specifieke achtergronden gebruikt voor de "RadioButtons". <LinearLayout android:paddingtop="10dp" android:paddingbottom="1dp" android:orientation="horizontal" > <RadioGroup android:padding="10dp" android:orientation="horizontal" > <RadioButton android:checked="true" android:layout_weight="1" android:text=" Nederlands " android:textsize="28dp" /> <RadioButton android:layout_weight="1" android:text=" Engels " android:textsize="28dp" /> <RadioButton android:layout_weight="1" android:text=" Thais " android:textsize="28dp" /> </RadioGroup> </LinearLayout> GridView De "GridView" voorziet in een rooster waarin een andere "View" kan geplaatst worden. De "Views" worden van links naar rechts ingevuld en van boven naar beneden. Als er geen ruimte meer is verschijnt er een verticale schuifbalk en kan de gebruiker naar beneden en naar boven "scrollen".

17 Android UI componenten 17/41 In het voorbeeld wordt gebruik gemaakt van een "ImageView" voor elke cel in de grid. Het invullen van elke cel gebeurt via een "ImageAdapter" klasse die afgeleid is van de "BaseAdapter". // bibliotheken import android.widget.gridview; // declaratie in de onactivitycreated functie van het fragment GridView gridview = (GridView) getactivity().findviewbyid(r.id.gridview); gridview.setadapter(new ImageAdapter(getActivity())); De "ImageAdapter": import android.content.context; import android.view.view; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.gridview; import android.widget.imageview; public class ImageAdapter extends BaseAdapter { private Context mcontext; // Constructor public ImageAdapter(Context c) { mcontext = c; public int getcount() { return mthumbids.length; public Object getitem(int position) { return null; public long getitemid(int position) { return 0; // create a new ImageView for each item referenced by the Adapter public View getview(int position, View convertview, ViewGroup parent) { ImageView imageview; if (convertview == null) { imageview = new ImageView(mContext); imageview.setlayoutparams(new GridView.LayoutParams(195, 195));

18 18/41 Android UI componenten imageview.setscaletype(imageview.scaletype.center_crop); imageview.setpadding(18, 18, 18, 18); else { imageview = (ImageView) convertview; imageview.setimageresource(mthumbids[position]); return imageview; // Keep all Images in array public Integer[] mthumbids = { R.drawable.image001, R.drawable.image002, R.drawable.image003, R.drawable.image004, R.drawable.image005, R.drawable.image006, R.drawable.image007, R.drawable.image008, R.drawable.image009, R.drawable.image010, R.drawable.image011, R.drawable.image012, R.drawable.image013, R.drawable.image014, R.drawable.image015, R.drawable.image016, R.drawable.image001, R.drawable.image002, R.drawable.image003, R.drawable.image004, R.drawable.image005, R.drawable.image006, R.drawable.image007, R.drawable.image008, R.drawable.image009, R.drawable.image010, R.drawable.image011, R.drawable.image012, R.drawable.image013, R.drawable.image014, R.drawable.image015, R.drawable.image016, ; De "ImageView" wordt in de "getview()" functie opgevuld met een image uit de "mthumbids" array. De nummers in deze array verwijzen naar de bestanden die in de map "res/drawable" staan. De individuele foto's worden opgehaald en getoond in een aparte activiteit die met een "Intent" wordt opgeroepen. // in de onactivitycreated functie van het fragment gridview.setonitemclicklistener(new AdapterView.OnItemClickListener() { public void onitemclick(adapterview<?> parent, View v, int position, long id) { // Send intent to SingleViewActivity Intent i = new Intent(getActivity(), SingleViewActivity.class); // Pass image index i.putextra("id", position); startactivity(i); ); In de "SingleViewActivity" staat de volgende code in de "oncreate()" functie: // Get intent data Intent i = getintent(); // Selected image id int position = i.getextras().getint("id"); ImageAdapter imageadapter = new ImageAdapter(this); ImageView imageview = (ImageView) findviewbyid(r.id.singleview); imageview.setimageresource(imageadapter.mthumbids[position]); De gebruikte foto's werden voor dit voorbeeld verkleind tot een grootte van 200 op 200 pixels. Je kan een foutmelding "outofmemory" krijgen bij het uitvoeren van de app in het virtual device als de bestandsgrootte van de foto's te groot is.

19 Android UI componenten 19/41 ViewPager Met een "ViewPager" kan je "swipen" van het ene scherm naar het andere (van links naar rechts en van rechts naar links). In het voorbeeld zijn 3 fragmenten aanwezig: LijstFragment, BeheerFragment, TabelFragment. De activiteit zorgt ook voor de tabbladen in de actionbar. Een "ViewPager" object maakt ook gebruik van een adapter. In het voorbeeld is een "SectionsPageAdapter" (sub)klasse ingevoegd die afgeleid is van de "FragmentPagerAdapter". In de "SectionsPageAdapter" klasse zijn 3 functies geïmplementeerd: getitem(), getcount() en getpagetitle(). package com.android.layouts4; import android.app.actionbar; import android.app.fragmenttransaction; import android.content.context; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.app.fragmentactivity; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmentpageradapter; import android.support.v4.app.navutils; import android.support.v4.view.viewpager; import android.view.gravity; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.widget.textview; public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

20 20/41 Android UI componenten SectionsPagerAdapter msectionspageradapter; ViewPager mviewpager; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); msectionspageradapter = new SectionsPagerAdapter(getSupportFragmentManager()); final ActionBar actionbar = getactionbar(); actionbar.setnavigationmode(actionbar.navigation_mode_tabs); mviewpager = (ViewPager) findviewbyid(r.id.pager); mviewpager.setadapter(msectionspageradapter); mviewpager.setonpagechangelistener(new ViewPager.SimpleOnPageChangeListener() { public void onpageselected(int position) { actionbar.setselectednavigationitem(position); ); for (int i = 0; i < msectionspageradapter.getcount(); i++) { actionbar.addtab(actionbar.newtab().settext(msectionspageradapter.getpagetitle(i)).settablistener(this)); public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.activity_main, menu); return true; public void ontabselected(actionbar.tab tab, FragmentTransaction fragmenttransaction) { mviewpager.setcurrentitem(tab.getposition()); public void ontabunselected(actionbar.tab tab, FragmentTransaction fragmenttransaction) { public void ontabreselected(actionbar.tab tab, FragmentTransaction fragmenttransaction) { public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); public Fragment getitem(int i) { switch (i) { case 0: Fragment lijstfragment = new LijstFragment(); Bundle lijstargs = new Bundle(); lijstargs.putint(dummysectionfragment.arg_section_number, i + 1); lijstfragment.setarguments(lijstargs); return lijstfragment; case 1: Fragment beheerfragment = new BeheerFragment(); Bundle beheerargs = new Bundle(); beheerargs.putint(dummysectionfragment.arg_section_number, i + 1); beheerfragment.setarguments(beheerargs); return beheerfragment; case 2: Fragment tabelfragment = new TabelFragment(); Bundle tabelargs = new Bundle(); tabelargs.putint(dummysectionfragment.arg_section_number, i + 1); tabelfragment.setarguments(tabelargs); return tabelfragment;

21 Android UI componenten 21/41 default: Fragment fragment = new DummySectionFragment(); Bundle args = new Bundle(); args.putint(dummysectionfragment.arg_section_number, i + 1); fragment.setarguments(args); return fragment; public int getcount() { return 3; public CharSequence getpagetitle(int position) { switch (position) { case 0: return getstring(r.string.title_section1).touppercase(); case 1: return getstring(r.string.title_section2).touppercase(); case 2: return getstring(r.string.title_section3).touppercase(); return null; /** * A dummy fragment representing a section of the app, but that simply displays dummy text. */ public static class DummySectionFragment extends Fragment { public DummySectionFragment() { public static final String ARG_SECTION_NUMBER = "section_number"; public View oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) { TextView textview = new TextView(getActivity()); textview.setgravity(gravity.center); Bundle args = getarguments(); textview.settext(integer.tostring(args.getint(arg_section_number))); return textview; <android.support.v4.view.viewpager xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" tools:context=".mainactivity" /> Tabbladen Tabbladen kunnen op verschillende manieren geïmplementeerd worden in Android. In het voorbeeld van de "ViewPager" werden tabbladen voorzien in de actionbar met de volgende code: public class MainActivity extends FragmentActivity implements ActionBar.TabListener { In de activiteit zijn ook de volgende functies opgenomen voor de tabbladen:

22 22/41 Android UI componenten public void ontabselected(actionbar.tab tab, FragmentTransaction fragmenttransaction) { mviewpager.setcurrentitem(tab.getposition()); public void ontabunselected(actionbar.tab tab, FragmentTransaction fragmenttransaction) { public void ontabreselected(actionbar.tab tab, FragmentTransaction fragmenttransaction) { Daarnaast kan je ook nog op een andere manier tabbladen gebruiken. In het voorbeeld hieronder zie je 3 tabbladen. In de code wordt gebruik gemaakt van het "TabHost" object en zijn "TabSpec" objecten. De activiteit is afgeleid van de "TabActivity" klasse. package com.android.layouts3; import android.os.bundle; import android.app.tabactivity; import android.content.intent; import android.view.menu; import android.widget.tabhost; import public class MainActivity extends TabActivity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); TabHost tabhost = gettabhost(); TabSpec spec1=tabhost.newtabspec("tab 1"); spec1.setindicator("tab 1"); Intent in1=new Intent(this, Act1.class); spec1.setcontent(in1); TabSpec spec2=tabhost.newtabspec("tab 2"); spec2.setindicator("tab 2"); Intent in2=new Intent(this,Act2.class);

23 Android UI componenten 23/41 spec2.setcontent(in2); TabSpec spec3=tabhost.newtabspec("tab 3"); spec3.setindicator("tab 3"); Intent in3=new Intent(this,Act3.class); spec3.setcontent(in3); tabhost.addtab(spec1); tabhost.addtab(spec2); tabhost.addtab(spec3); public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.activity_main, menu); return true; In de FrameLayout ("tabcontent") worden de schermen van de activiteiten getoond. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" > <TabHost android:layout_height="match_parent" android:layout_alignparentleft="true" android:layout_alignparenttop="true" > <LinearLayout android:layout_height="match_parent" android:orientation="vertical" > <TabWidget > </TabWidget> <FrameLayout android:layout_height="match_parent" > </FrameLayout> </LinearLayout> </TabHost> </RelativeLayout>

24 24/41 Android UI componenten NavigationDrawer Een "NavigationDrawer" is een schuifbalk die links verschijnt als je vanaf de linker rand veegt of als je op de "Home" knop links in de actionbar drukt. De schuifbalk bevat een lijst met bvb. fragment namen. Op deze manier kan je jouw app opdelen in logische onderdelen (of secties). package android.taaldb; import android.app.activity; import android.content.intent; import android.support.v7.app.actionbaractivity; import android.support.v7.app.actionbar; import android.support.v4.app.fragment; import android.support.v4.app.fragmentmanager; import android.content.context; import android.os.build; import android.os.bundle; import android.view.gravity; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.support.v4.widget.drawerlayout; import android.widget.arrayadapter; import android.widget.textview; public class MainActivity extends ActionBarActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks { /** * Fragment managing the behaviors, interactions and presentation of the navigation drawer. */ private NavigationDrawerFragment mnavigationdrawerfragment; /** * Used to store the last screen title. For use in #restoreactionbar(). */ private CharSequence mtitle;

25 Android UI componenten 25/41 protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); mnavigationdrawerfragment = (NavigationDrawerFragment) getsupportfragmentmanager().findfragmentbyid(r.id.navigation_drawer); mtitle = getstring(r.string.categorie); //gettitle(); // Set up the drawer. mnavigationdrawerfragment.setup( R.id.navigation_drawer, (DrawerLayout) findviewbyid(r.id.drawer_layout)); public void onnavigationdraweritemselected(int position) { // update the main content by replacing fragments Fragment fragment = null; switch (position) { case 0: fragment = new CategoriesFragment(); mtitle = getstring(r.string.categorie); break; case 1: fragment = new VertalingenFragment(); mtitle = getstring(r.string.vertaling); break; case 2: fragment = new ZoekenFragment(); mtitle = getstring(r.string.zoeken); break; default: break; if (fragment!= null) { FragmentManager fragmentmanager = getsupportfragmentmanager(); fragmentmanager.begintransaction().replace(r.id.container, fragment).commit(); else { FragmentManager fragmentmanager = getsupportfragmentmanager(); fragmentmanager.begintransaction().replace(r.id.container, PlaceholderFragment.newInstance(position + 1)).commit(); public void onsectionattached(int number) { switch (number) { case 1: mtitle = getstring(r.string.categorie); break; case 2: mtitle = getstring(r.string.vertaling); break; case 3: mtitle = getstring(r.string.zoeken); break; public void restoreactionbar() { ActionBar actionbar = getsupportactionbar(); actionbar.setnavigationmode(actionbar.navigation_mode_standard); actionbar.setdisplayshowtitleenabled(true); actionbar.settitle(mtitle);

26 26/41 Android UI componenten public boolean oncreateoptionsmenu(menu menu) { if (!mnavigationdrawerfragment.isdraweropen()) { // Only show items in the action bar relevant to this screen // if the drawer is not showing. Otherwise, let the drawer // decide what to show in the action bar. getmenuinflater().inflate(r.menu.main, menu); restoreactionbar(); return true; return super.oncreateoptionsmenu(menu); public boolean onoptionsitemselected(menuitem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. // Handle action buttons switch(item.getitemid()) { case R.id.menu_settings: //startactivity(new Intent(this, Preferences.class)); return true; case R.id.menu_endapp: finish(); return true; return super.onoptionsitemselected(item); public static class PlaceholderFragment extends Fragment { private static final String ARG_SECTION_NUMBER = "section_number"; public static PlaceholderFragment newinstance(int sectionnumber) { PlaceholderFragment fragment = new PlaceholderFragment(); Bundle args = new Bundle(); args.putint(arg_section_number, sectionnumber); fragment.setarguments(args); return fragment; public PlaceholderFragment() { public View oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) { View rootview = inflater.inflate(r.layout.fragment_main, container, false); return rootview; public void onattach(activity activity) { super.onattach(activity); ((MainActivity) activity).onsectionattached( getarguments().getint(arg_section_number)); package android.taaldb; import android.support.v7.app.actionbaractivity; import android.app.activity; import android.support.v7.app.actionbar;

27 Android UI componenten 27/41 import android.support.v4.app.fragment; import android.support.v4.app.actionbardrawertoggle; import android.support.v4.view.gravitycompat; import android.support.v4.widget.drawerlayout; import android.content.sharedpreferences; import android.content.res.configuration; import android.os.bundle; import android.preference.preferencemanager; import android.view.layoutinflater; import android.view.menu; import android.view.menuinflater; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.listview; import android.widget.toast; /** * Fragment used for managing interactions for and presentation of a navigation drawer. * See the <a href="https://developer.android.com/design/patterns/navigationdrawer.html#interaction"> * design guidelines</a> for a complete explanation of the behaviors implemented here. */ public class NavigationDrawerFragment extends Fragment { /** * Remember the position of the selected item. */ private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position"; /** * Per the design guidelines, you should show the drawer on launch until the user manually * expands it. This shared preference tracks this. */ private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned"; /** * A pointer to the current callbacks instance (the Activity). */ private NavigationDrawerCallbacks mcallbacks; /** * Helper component that ties the action bar to the navigation drawer. */ private ActionBarDrawerToggle mdrawertoggle; private DrawerLayout mdrawerlayout; private ListView mdrawerlistview; private View mfragmentcontainerview; private int mcurrentselectedposition = 0; private boolean mfromsavedinstancestate; private boolean muserlearneddrawer; public NavigationDrawerFragment() { public void oncreate(bundle savedinstancestate) {

28 28/41 Android UI componenten super.oncreate(savedinstancestate); // Read in the flag indicating whether or not the user has demonstrated awareness of the // drawer. See PREF_USER_LEARNED_DRAWER for details. SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity()); muserlearneddrawer = sp.getboolean(pref_user_learned_drawer, false); if (savedinstancestate!= null) { mcurrentselectedposition = savedinstancestate.getint(state_selected_position); mfromsavedinstancestate = true; // Select either the default item (0) or the last selected item. selectitem(mcurrentselectedposition); public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); // Indicate that this fragment would like to influence the set of actions in the action bar. sethasoptionsmenu(true); public View oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) { mdrawerlistview = (ListView) inflater.inflate( R.layout.fragment_navigation_drawer, container, false); mdrawerlistview.setonitemclicklistener(new AdapterView.OnItemClickListener() { public void onitemclick(adapterview<?> parent, View view, int position, long id) { selectitem(position); ); mdrawerlistview.setadapter(new ArrayAdapter<String>( getactionbar().getthemedcontext(), android.r.layout.simple_list_item_activated_1, android.r.id.text1, new String[]{ getstring(r.string.categorie), getstring(r.string.vertaling), getstring(r.string.zoeken), )); mdrawerlistview.setitemchecked(mcurrentselectedposition, true); return mdrawerlistview; public boolean isdraweropen() { return mdrawerlayout!= null && mdrawerlayout.isdraweropen(mfragmentcontainerview); /** * Users of this fragment must call this method to set up the navigation drawer interactions. * fragmentid The android:id of this fragment in its activity's layout. drawerlayout The DrawerLayout containing this fragment's UI. */ public void setup(int fragmentid, DrawerLayout drawerlayout) { mfragmentcontainerview = getactivity().findviewbyid(fragmentid); mdrawerlayout = drawerlayout;

29 Android UI componenten 29/41 // set a custom shadow that overlays the main content when the drawer opens mdrawerlayout.setdrawershadow(r.drawable.drawer_shadow, GravityCompat.START); // set up the drawer's list view with items and click listener ActionBar actionbar = getactionbar(); actionbar.setdisplayhomeasupenabled(true); actionbar.sethomebuttonenabled(true); // ActionBarDrawerToggle ties together the the proper interactions // between the navigation drawer and the action bar app icon. mdrawertoggle = new ActionBarDrawerToggle( getactivity(), /* host Activity */ mdrawerlayout, /* DrawerLayout object */ R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */ R.string.navigation_drawer_open, /* "open drawer" description for accessibility */ R.string.navigation_drawer_close /* "close drawer" description for accessibility */ ) { public void ondrawerclosed(view drawerview) { super.ondrawerclosed(drawerview); if (!isadded()) { return; getactivity().supportinvalidateoptionsmenu(); // calls onprepareoptionsmenu() public void ondraweropened(view drawerview) { super.ondraweropened(drawerview); if (!isadded()) { return; if (!muserlearneddrawer) { // The user manually opened the drawer; store this flag to prevent auto-showing // the navigation drawer automatically in the future. muserlearneddrawer = true; SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity()); sp.edit().putboolean(pref_user_learned_drawer, true).apply(); ; getactivity().supportinvalidateoptionsmenu(); // calls onprepareoptionsmenu() // If the user hasn't 'learned' about the drawer, open it to introduce them to the drawer, // per the navigation drawer design guidelines. if (!muserlearneddrawer &&!mfromsavedinstancestate) { mdrawerlayout.opendrawer(mfragmentcontainerview); // Defer code dependent on restoration of previous instance state. mdrawerlayout.post(new Runnable() { public void run() { mdrawertoggle.syncstate(); ); mdrawerlayout.setdrawerlistener(mdrawertoggle);

30 30/41 Android UI componenten private void selectitem(int position) { mcurrentselectedposition = position; if (mdrawerlistview!= null) { mdrawerlistview.setitemchecked(position, true); if (mdrawerlayout!= null) { mdrawerlayout.closedrawer(mfragmentcontainerview); if (mcallbacks!= null) { mcallbacks.onnavigationdraweritemselected(position); public void onattach(activity activity) { super.onattach(activity); try { mcallbacks = (NavigationDrawerCallbacks) activity; catch (ClassCastException e) { throw new ClassCastException("Activity must implement NavigationDrawerCallbacks."); public void ondetach() { super.ondetach(); mcallbacks = null; public void onsaveinstancestate(bundle outstate) { super.onsaveinstancestate(outstate); outstate.putint(state_selected_position, mcurrentselectedposition); public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); // Forward the new configuration the drawer toggle component. mdrawertoggle.onconfigurationchanged(newconfig); public void oncreateoptionsmenu(menu menu, MenuInflater inflater) { // If the drawer is open, show the global app actions in the action bar. See also // showglobalcontextactionbar, which controls the top-left area of the action bar. if (mdrawerlayout!= null && isdraweropen()) { inflater.inflate(r.menu.global, menu); showglobalcontextactionbar(); super.oncreateoptionsmenu(menu, inflater); public boolean onoptionsitemselected(menuitem item) { if (mdrawertoggle.onoptionsitemselected(item)) { return true; /* if (item.getitemid() == R.id.action_example) {

31 Android UI componenten 31/41 */ Toast.makeText(getActivity(), "Example action.", Toast.LENGTH_SHORT).show(); return true; return super.onoptionsitemselected(item); /** * Per the navigation drawer design guidelines, updates the action bar to show the global app * 'context', rather than just what's in the current screen. */ private void showglobalcontextactionbar() { ActionBar actionbar = getactionbar(); actionbar.setdisplayshowtitleenabled(true); actionbar.setnavigationmode(actionbar.navigation_mode_standard); actionbar.settitle(r.string.app_name); private ActionBar getactionbar() { return ((ActionBarActivity) getactivity()).getsupportactionbar(); /** * Callbacks interface that all activities using this fragment must implement. */ public static interface NavigationDrawerCallbacks { /** * Called when an item in the navigation drawer is selected. */ void onnavigationdraweritemselected(int position); AlertDialog Een "AlertDialog" is een pop-up venster dat volledig aan te passen is aan jouw wensen. Je geeft een titel op ("settitle()"), voorziet een bericht ("setmessage()") en duid aan wat er moet gebeuren bij de "positieve" knop ("setpositivebutton()") en bij de "negatieve" knop ("setnegativebutton()"). Uiteindelijk wordt het venster getoond met de functie "show()" van het "AlertDialog.Builder" object. AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); alert.settitle(r.string.notadelete_title); alert.setmessage(ettitel.gettext().tostring()); alert.setpositivebutton(r.string.notadeleteok, new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int whichbutton) { // delete nota objnota = new Nota(rowid,ettitel.getText().toString(),ettekst.getText().toString()); objdbhelper.deletenota(objnota);

32 32/41 Android UI componenten refreshscreen(); spnotasadapter = getnotaslist(); spnotas.setadapter(spnotasadapter); ); alert.setnegativebutton(r.string.notadeletecancel, new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int whichbutton) { // geen delete ); alert.show(); Je kan in het "message" gedeelte ook nog meerdere "Views" opnemen zoals je in het onderstaande voorbeeld ziet. Met de "setview()" functie van het "AlertDialog.Builder" object wordt de omsluitende "View" toegevoegd (in het voorbeeld de "LinearLayout" "Viewgroup"). AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); alert.settitle(r.string.websites_title); alert.setmessage(r.string.webadres); llwebsites = new LinearLayout(getActivity()); llwebsites.setorientation(linearlayout.vertical); llwebsites.setlayoutparams(new LayoutParams(500, 600)); TextView tvnaam = new TextView(getActivity()); tvnaam.settext(" Naam"); llwebsites.addview(tvnaam); naam = new EditText(getActivity()); llwebsites.addview(naam); TextView tvinput = new TextView(getActivity()); tvinput.settext(" URL"); llwebsites.addview(tvinput); input = new EditText(getActivity()); llwebsites.addview(input); TextView tvoms = new TextView(getActivity()); tvoms.settext(" Omschrijving (optioneel)"); llwebsites.addview(tvoms); oms = new EditText(getActivity()); llwebsites.addview(oms); alert.setview(llwebsites); alert.setpositivebutton(r.string.websitesok, new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int whichbutton) { // insert website if (validatie() == true) { Website ws = new Website(naam.getText().toString(), input.gettext().tostring(), oms.gettext().tostring()); db.createwebsite(ws);

33 Android UI componenten 33/41 mspinneradapter = getwebsites(); actionbar.setlistnavigationcallbacks(mspinneradapter,monnavigationlistener); ); alert.setnegativebutton(r.string.websitescancel, new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int whichbutton) { // geen update ); alert.show(); Imageview Als je een afbeelding wil gebruiken in jouw app dan kan je een "ImageView" gebruiken. Je koppelt de "ImageView" aan de "ImageView" layout en je gebruikt bvb. de "setimageresource()" functie om de afbeelding op te halen uit de "res/drawable" map. // bibliotheken import android.widget.imageview; // in de oncreate functie ImageView imview = (ImageView) findviewbyid(r.id.imageview); imview.setimageresource(r.drawable.speelkaarten); <ImageView android:layout_width="180dp" android:layout_height="240dp" android:layout_gravity="center_horizontal" /> Je kan dezelfde afbeelding met Java source code ook ophalen zoals je kan zien in het volgende voorbeeld. De afbeelding is dezelfde.

34 34/41 Android UI componenten In de "oncreateview()" functie van het "BeheerFragment" wordt een "LinearLayout" met daarin een "ImageView" en een "TextView" gedefinieerd. package com.android.layouts4; import android.graphics.drawable.drawable; import android.os.bundle; import android.support.v4.app.fragment; import android.view.gravity; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.linearlayout; import android.widget.textview; import android.widget.linearlayout.layoutparams; public class BeheerFragment extends Fragment { private Drawable imagefile; private ImageView imview; private LinearLayout llmain; public BeheerFragment() { public View oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) { llmain = new LinearLayout(getActivity()); llmain.setorientation(linearlayout.vertical); llmain.setlayoutparams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); llmain.setgravity(gravity.center_horizontal); imagefile = getactivity().getresources().getdrawable(r.drawable.speelkaarten); imview = new ImageView(getActivity()); imview.setlayoutparams(new LayoutParams(100, 200)); imview.setimagedrawable(imagefile); llmain.addview(imview); TextView textview = new TextView(getActivity()); textview.setgravity(gravity.center); textview.settext("beheerfragment"); llmain.addview(textview); return llmain;

35 Android UI componenten 35/41 WebView Zoals de naam al doet vermoeden kan je met een "WebView" webpagina's tonen in een app. Als je dubbelklikt of tweemaal kort na mekaar op de "WebView" drukt wordt de pagina vergroot. Met duim en wijsvinger naar mekaar of van mekaar weg vegen op de "WebView" zorgt voor een aangepaste vergroting van de pagina. // bibliotheken import android.net.uri; import android.os.asynctask; import android.webkit.webview; import android.webkit.webviewclient; // declaraties private WebView webview; // in de onactivitycreated functie van het fragment webview = (WebView) getactivity().findviewbyid(r.id.webview1); webview.setwebviewclient(new mywebviewclient()); // Android (17) webview sluit app als Javascript wordt gebruikt!!! if(build.version.sdk_int < 16){ webview.getsettings().setjavascriptenabled(true); else { webview.getsettings().setjavascriptenabled(false); if(build.version.sdk_int == 19) { webview.getsettings().setjavascriptenabled(true); webview.getsettings().setbuiltinzoomcontrols(true); webview.getsettings().setloadwithoverviewmode(true); webview.getsettings().setusewideviewport(true); LoadWebPageASYNC task = new LoadWebPageASYNC(); task.execute(new String[] { "http://www.cursustekst.be/" ); // achtergrond taak om een webpagina te laden private class LoadWebPageASYNC extends AsyncTask<String, Void, String> { protected String doinbackground(string... urls) { return urls[0];

36 36/41 Android UI componenten protected void onpostexecute(string result) { webview.loadurl(result); // WebViewClient klasse om de verwerking van hyperlink clicks op te vangen public class mywebviewclient extends WebViewClient { private String newurl; public void onpagestarted(webview view, String url, Bitmap favicon) { super.onpagestarted(view, url, favicon); eturl.settext(url); eturl.requestfocus(); public void onreceivederror(webview view, int errorcode, String description, String failingurl) { Log.d("Webview client", "error code:" + errorcode + " - " + description); public boolean shouldoverrideurlloading(webview view, String url) { try { if (url.endswith(".pdf") url.endswith(".apk") url.endswith(".doc") url.endswith(".docx") url.endswith(".xls") url.endswith(".xlsx") url.endswith(".ppt") url.endswith(".pptx")) { startactivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; else { if (url.equals("about:blank")) return true; view.loadurl(url); return true; catch (Exception e) { Log.v("Webclient shouldoverrideurlloading",e.tostring()); return true; public void onbackpressed() { // geen actie omdat de knop in de actionbar moet gebruikt worden /* public void onbackpressed() { if ((webview!= null) && (webview.cangoback())) { if (webview.geturl() == null) { webview.goback(); webview.goback(); else { super.getactivity().onbackpressed(); */

37 Android UI componenten 37/41 OptionsMenu Gewoonlijk verschijnt er een menu knopje rechts bovenaan. Als je erop drukt (of klikt) wordt de menutekst getoond. Je kan voor menu-ingangen een icoontje voorzien (die in de actionbar kunnen getoond worden). Op sommige tabletten en smartphones is er een hardware knop op het toestel dat ook de menu toont als je erop drukt. De menu kan dan onderaan verschijnen. public void oncreateoptionsmenu(menu menu, MenuInflater inflater) { inflater.inflate(r.menu.activiteiten_menu, menu); super.oncreateoptionsmenu(menu, public boolean onoptionsitemselected(menuitem mnitem) { try { Fragment fragment = null; switch (mnitem.getitemid()) { case R.id.menu_settings: return false; case R.id.menu_toevoegen_activiteit: insert_activiteit(); return true; case R.id.menu_wijzigen_activiteit: update_activiteit(); return true; case R.id.menu_verwijderen_activiteit: delete_activiteit(); return true; case R.id.menu_kalender_fragment: fragment = new KalenderFragment(); if (fragment!= null) { android.support.v4.app.fragmentmanager fragmentmanager = getfragmentmanager(); FragmentTransaction fragmenttransaction = fragmentmanager.begintransaction(); fragmenttransaction.replace(r.id.content_frame, fragment); fragmenttransaction.commit(); return true; case R.id.menu_ongedaan_maken: refreshscreen(); return true; case R.id.menu_endapp: return false; default: return super.onoptionsitemselected(mnitem);

38 38/41 Android UI componenten catch (Exception e) { Log.v("Activiteiten fragment onoptionsitemselected", e.tostring()); finally { return true; Met het attribuut "android:showasaction" geef je aan of er een icoontje in de actionbar mag verschijnen ("ifroom") of niet ("never"). Als er geen icoontje kan getoond worden (op een smartphone bvb.) dan wordt de menu-ingang tekst in de menu getoond. <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:orderincategory="700" android:showasaction="ifroom" /> <item android:orderincategory="701" android:showasaction="ifroom" /> <item android:orderincategory="702" android:showasaction="ifroom" /> <item android:orderincategory="703" android:showasaction="ifroom" /> <item android:orderincategory="704" android:showasaction="never" /> </menu> Als je een verschillend "OptionsMenu" per fragment wil gebruiken dan moet je in de "oncreate()" functie van het fragment de functie "sethasoptionsmenu(true)" aanroepen. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); sethasoptionsmenu(true);

39 Android UI componenten 39/41 DatePickerDialog Om een datum te selecteren kan je gebruik maken van een "DatePickerDialog" venster (in het voorbeeld geïmplementeerd in een "DialogFragment"). DialogFragment newfragment = new DatePickerFragment1(); newfragment.show(getfragmentmanager(), "datepicker"); public static class DatePickerFragment1 extends DialogFragment implements DatePickerDialog.OnDateSetListener { public Dialog oncreatedialog(bundle savedinstancestate) { // Use the current date as the default date in the picker final Calendar c = Calendar.getInstance(); int year = c.get(calendar.year); int month = c.get(calendar.month); int day = c.get(calendar.day_of_month); // Create a new instance of DatePickerDialog and return it return new DatePickerDialog(getActivity(), this, year, month, day); public void ondateset(datepicker view, int year, int month, int day) { // Do something with the date chosen by the user jaar = String.valueOf(year); if (month+1 < 10) { maand = "0" + String.valueOf(month + 1); else { maand = String.valueOf(month + 1); if (day < 10) { dag = "0" + String.valueOf(day); else { dag = String.valueOf(day); etvan.settext(jaar + "-" + maand + "-" + dag);

40 40/41 Android UI componenten CalendarView Met een "CalendarView" kan je een kalender op het scherm zetten. Als je op een datum drukt wordt er voor die datum in het voorbeeld de activiteiten eronder getoond. De weergave wijzigt als je van boven naar onder of van onder naar boven veegt. De maandtitel past zich automatisch aan. // bibliotheken import android.widget.calendarview; // declaraties private CalendarView cvkalender; SimpleDateFormat datumformaat; // in de onactivitycreated functie van het fragment cvkalender = (CalendarView) getactivity().findviewbyid(r.id.calendarview1); cvkalender.setondatechangelistener(datechange); datumformaat = new SimpleDateFormat("yyyy-MM-dd"); String dat = datumformaat.format(calendar.getinstance().gettime()); toon_activiteiten(dat); OnDateChangeListener datechange = new OnDateChangeListener() { public void onselecteddaychange(calendarview view, int year, int month, int dayofmonth) { String datum = datumformaat.format(view.getdate()); toon_activiteiten(datum); ; Toast Als je berichten op het scherm wil zetten kan je gebruik maken van een "Toast" object. Met de "maketext()" functie van het "Toast" object kan je kort of lang (enkele seconden) een bericht tonen.

Een fragment wordt afgeleid van de basis klasse "Fragment".

Een fragment wordt afgeleid van de basis klasse Fragment. Android fragmenten 1/5 Fragmenten Klasse Een fragment wordt afgeleid van de basis klasse "Fragment". package com.android.cursustekst; import java.text.simpledateformat; import java.util.arraylist; import

Nadere informatie

App onderdelen. Source files. Android app onderdelen 1/6

App onderdelen. Source files. Android app onderdelen 1/6 Android app onderdelen 1/6 App onderdelen Een Android project bestaat uit een aantal onderdelen die hieronder beschreven worden. In het project venster kan je de mappen weergeven volgens de hieronder aangeduide

Nadere informatie

Dan stel ik u graag voor aan Android. Een besturingssysteem voor gsm s uitgebracht door de welgekende firma Google.

Dan stel ik u graag voor aan Android. Een besturingssysteem voor gsm s uitgebracht door de welgekende firma Google. Verslag Android GSM Je kan gsm s en hun gebruik op delen in 2 groepen. Sommige mensen gebruiken het enkel voor te bellen en eens een sms te versturen, voor de rest hebben ze enkel nood aan een adressenboek.

Nadere informatie

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B; Beschouw bijvoorbeeld de twee onderstaande klassen, waarvan de attributen en eigenschappen geannoteerd zijn met bijkomende XML-annotaties: using System ; using System. Xml ; using System. Xml. S e r i

Nadere informatie

Instructie Beheren Cases

Instructie Beheren Cases Instructie Beheren Cases Om een vraag in te dienen met betrekking tot de werking van de software kunt u gebruik maken van onze portal. U gaat dan een Case aanmaken. Aanmaken Case Om een nieuwe case aan

Nadere informatie

Katholieke Hogeschool Kempen ASP

Katholieke Hogeschool Kempen ASP Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica ASP www.projectchatroom.be Yorkim Parmentier 3TI4 Andy Geluykens 3TI4 Academiejaar

Nadere informatie

Werkomgeving. Android Studio. Android - werkomgeving 1/6

Werkomgeving. Android Studio. Android - werkomgeving 1/6 Android - werkomgeving 1/6 Werkomgeving Android Studio Installatie Ga naar de volgende URL: http://developer.android.com/sdk/index.html Klik op de knop "Download Android Studio for Windows" om het programma

Nadere informatie

Functioneel Ontwerp / Wireframes:

Functioneel Ontwerp / Wireframes: Functioneel Ontwerp / Wireframes: Het functioneel ontwerp van de ilands applicatie voor op de iphone is gebaseerd op het iphone Human Interface Guidelines handboek geschreven door Apple Inc 2007. Rounded-Rectangle

Nadere informatie

Om de toegang te krijgen tot de. download het programma. http://retroshare.sourceforge.net/downloads.html

Om de toegang te krijgen tot de. download het programma. http://retroshare.sourceforge.net/downloads.html www.vhn-online.nl Om de toegang te krijgen tot de download het programma http://retroshare.sourceforge.net/downloads.html Na het downloaden installeer en open het programma. Aan u wordt gevraagd: Create

Nadere informatie

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 QUICK GUIDE C Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 Version 0.9 (June 2014) Per May 2014 OB10 has changed its name to Tungsten Network

Nadere informatie

Firewall van de Speedtouch 789wl volledig uitschakelen?

Firewall van de Speedtouch 789wl volledig uitschakelen? Firewall van de Speedtouch 789wl volledig uitschakelen? De firewall van de Speedtouch 789 (wl) kan niet volledig uitgeschakeld worden via de Web interface: De firewall blijft namelijk op stateful staan

Nadere informatie

WIDGETKIT 2. Inleiding

WIDGETKIT 2. Inleiding WIDGETKIT 2 Inleiding Widgetkit 2 is een component wat in Joomla te gebruiken is. Het component bevat een aantal Widgets die elk op zijn eigen manier content op de website weergeeft. Hieronder is te zien

Nadere informatie

! GeoNetwork INSPIRE Atom!

! GeoNetwork INSPIRE Atom! GeoNetwork INSPIRE Atom GeoNetwork INSPIRE Atom 1 Configuration 2 Metadata editor 3 Services 3 Page 1 of 7 Configuration To configure the INSPIRE Atom go to Administration > System configuration and enable

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

Kleine cursus PHP5. Auteur: Raymond Moesker Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven

Nadere informatie

[BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden?

[BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden? [BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden? Gebruik altijd de laatste versie omdat er serieuse bug-fixes in kunnen zitten. Check altijd de release notes en openstaande bugs. Er is

Nadere informatie

Icoon/Icon Betekenis Description. Change scheduling Online. Gaat offline op (datum/tijd) Online. Going offline on (date/time)

Icoon/Icon Betekenis Description. Change scheduling Online. Gaat offline op (datum/tijd) Online. Going offline on (date/time) Algemeen/General Gepubliceerd maar gewijzigd Published but changed Meer acties op geselecteerde content More actions on selected content Gepubliceerd en niet gewijzigd Published and not changed Terugdraaien

Nadere informatie

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

Scratch voor mobiel: AppInventor

Scratch voor mobiel: AppInventor Scratch voor mobiel: AppInventor Beginnen AppInventor is Scratch voor Android. Je maakt hiermee apps voor op je mobiele telefoon of tablet. Beginnen: Start chrome.exe en ga naar http://appinventor.mit.edu/explore

Nadere informatie

IMP Uitwerking week 13

IMP Uitwerking week 13 IMP Uitwerking week 13 Opgave 1 Nee. Anders moet bijvoorbeeld een venster applicatie een subklasse zijn van zowel Frame en WindowListener. Als de applicatie ook een button of een menu heeft, dan moet het

Nadere informatie

Zelftest Programmeren in Java

Zelftest Programmeren in Java Zelftest Programmeren in Java Document: n0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST PROGRAMMEREN IN JAVA Deze test

Nadere informatie

1. Voor het installeren wordt geadviseerd een backup te maken van uw database en bestanden.

1. Voor het installeren wordt geadviseerd een backup te maken van uw database en bestanden. NL: KiyOh.nl gebruikers kunnen met deze plug in automatisch klantbeoordelingen verzamelen, publiceren en delen in social media. Wanneer een klant een bestelling heeft gemaakt in uw Magento Shop, wordt

Nadere informatie

2.ouderbeleid.3.plaatsingsprocedure werk admini Pagina 1 van 14

2.ouderbeleid.3.plaatsingsprocedure werk admini Pagina 1 van 14 2.ouderbeleid.3.plaatsingsprocedure werk admini Pagina 1 van 14 In deze werkinstructies kan alles vinden wat te maken heeft met het onderhoud van het kdadmin programma. Je kunt deze onderdelen vinden in

Nadere informatie

Uitleg CMS Utrecht Your Way Button 1. Inloggen

Uitleg CMS Utrecht Your Way Button 1. Inloggen Uitleg CMS Utrecht Your Way Button 1. Inloggen Met jouw login gegevens kun je inloggen via http://button.utrechtyourway.nl/cms 2. Dashboard Na inloggen wordt het dashboard van het CMS zichtbaar. Of te

Nadere informatie

Goede bedoelingen. Hoofdstuk 8. 8.1 Een App met meerdere activiteiten. 8.2 Dialogen

Goede bedoelingen. Hoofdstuk 8. 8.1 Een App met meerdere activiteiten. 8.2 Dialogen 103 Hoofdstuk 8 Goede bedoelingen 8.1 Een App met meerdere activiteiten Activity en View Tot nu toe bestonden onze apps uit één (subklasse van) Activity, die in zijn content view gegevens aan de gebruiker

Nadere informatie

Deel 1 : Gesloten Boek

Deel 1 : Gesloten Boek Naam : EXAMEN SOFTWAREONTWIKKELING 1STE PROEF BURG. IR. COMPUTERWETENSCHAPPEN EERSTE EXAMENPERIODE ACADEMIEJAAR 2004-2005 Deel 1 : Gesloten Boek 1. Testen Geef een overzicht van de verschillende testen

Nadere informatie

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) LES 4 In deze les gaan we een eenvoudig dobbelspelletje maken: Allereerst krijgt de speler de gelegenheid zijn/haar naam in te vullen en daarna op OK te klikken

Nadere informatie

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf

Nadere informatie

Aanvullende toets Mobiel programmeren - versie 1 Woensdag 23 maart 2016, uur

Aanvullende toets Mobiel programmeren - versie 1 Woensdag 23 maart 2016, uur Aanvullende toets Mobiel programmeren - versie 1 Woensdag 23 maart 2016, 13.30-15.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Handleiding Installatie ADS

Handleiding Installatie ADS Handleiding Installatie ADS Versie: 1.0 Versiedatum: 19-03-2014 Inleiding Deze handleiding helpt u met de installatie van Advantage Database Server. Zorg ervoor dat u bij de aanvang van de installatie

Nadere informatie

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers English Instructions Windows 8 out-of-the-box supports the ICARUS Illumina (E653) e-reader. However, when users upgrade their Windows

Nadere informatie

NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. DOEL: SIMULATOR:

NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. DOEL: SIMULATOR: NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. Door mee te doen aan deze uitdaging kan je Nspyre laten zien wat je kan. Schrijf jij de beste oplossing dan is deze lego mindstorms nxt 2.0 set voor jou.

Nadere informatie

http://www.liacs.nl/home/kosters/java/

http://www.liacs.nl/home/kosters/java/ sheets Programmeren 1 Java college 2, Walter Kosters De sheets zijn gebaseerd op de hoofdstukken 2 tot en met 6 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) LES 3 De programma s die we in Les 1 en Les 2 gezien hebben, zagen er niet erg mooi uit. In deze les gaan we er onder andere naar kijken, hoe we de programma

Nadere informatie

HET WORDPRESS ZONDER GEDOE STUDIEPAKKET

HET WORDPRESS ZONDER GEDOE STUDIEPAKKET X Theme portfolio HET WORDPRESS ZONDER GEDOE STUDIEPAKKET De Instructie E-Books om zonder gedoe zelf je WordPress website te maken INHOUD P 1 X Theme portfolio P 2 Portfolio Categorieën P 3 Portfolio Tags

Nadere informatie

Tentamen Objectgeorienteerd Programmeren

Tentamen Objectgeorienteerd Programmeren Tentamen Objectgeorienteerd Programmeren 5082IMOP6Y maandag 16 november 2015 13:00 15:00 Schrijf je naam en studentnummer op de regel hieronder. Sla deze pagina niet om tot de surveillant vertelt dat het

Nadere informatie

Leeftijdcheck (NL) Age Check (EN)

Leeftijdcheck (NL) Age Check (EN) Leeftijdcheck (NL) Age Check (EN) [Type text] NL: Verkoopt u producten die niet aan jonge bezoekers verkocht mogen worden of heeft uw webwinkel andere (wettige) toelatingscriteria? De Webshophelpers.nl

Nadere informatie

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise Inhoudsopgave 1. Voorbereiding... 4 2. Web Service Connector tool configuratie... 5 3. TaskCentre taak voor het aanmaken van

Nadere informatie

Access. Accomplish. Share. Tips voor het gebruik van Office 365: tools voor email, web, en samenwerking

Access. Accomplish. Share. Tips voor het gebruik van Office 365: tools voor email, web, en samenwerking Access. Accomplish. Share. Tips voor het gebruik van Office 365: tools voor email, web, en samenwerking Werk samen, beter Stel uw team in op succes 2 Zie wie online is Communiceer snel met uw team Team

Nadere informatie

Settings for the C100BRS4 MAC Address Spoofing with cable Internet.

Settings for the C100BRS4 MAC Address Spoofing with cable Internet. Settings for the C100BRS4 MAC Address Spoofing with cable Internet. General: Please use the latest firmware for the router. The firmware is available on http://www.conceptronic.net! Use Firmware version

Nadere informatie

Y.S. Lubbers en W. Witvoet

Y.S. Lubbers en W. Witvoet WEBDESIGN Eigen Site Evaluatie door: Y.S. Lubbers en W. Witvoet 1 Summary Summary Prefix 1. Content en structuur gescheiden houden 2. Grammaticaal correcte en beschrijvende markup 3. Kopregels 4. Client-

Nadere informatie

Een eerste applicatie

Een eerste applicatie Een eerste applicatie 2.1 Inleiding Programmeren in Visual Basic.NET doe je niet alleen door regels met code te schrijven. Je begint met het ontwerpen van een venster in de design mode met allerlei controls,

Nadere informatie

Veel gestelde vragen nieuwe webloginpagina

Veel gestelde vragen nieuwe webloginpagina Veel gestelde vragen nieuwe webloginpagina Op deze pagina treft u een aantal veel gestelde vragen aan over het opstarten van de nieuwe webloginpagina http://weblogin.tudelft.nl: 1. Ik krijg de melding

Nadere informatie

Hoe te verbinden met NDI Remote Office (NDIRO): Apple OS X How to connect to NDI Remote Office (NDIRO): Apple OS X

Hoe te verbinden met NDI Remote Office (NDIRO): Apple OS X How to connect to NDI Remote Office (NDIRO): Apple OS X Handleiding/Manual Hoe te verbinden met (NDIRO): Apple OS X How to connect to (NDIRO): Apple OS X Inhoudsopgave / Table of Contents 1 Verbinden met het gebruik van Apple OS X (Nederlands)... 3 2 Connect

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Digitale

Nadere informatie

Ga naar http://www.domeinnaam.nl/wp-admin en log in met de gebruikersnaam en wachtwoord verkregen via mail.

Ga naar http://www.domeinnaam.nl/wp-admin en log in met de gebruikersnaam en wachtwoord verkregen via mail. INLOGGEN Ga naar http://www.domeinnaam.nl/wp-admin en log in met de gebruikersnaam en wachtwoord verkregen via mail. Vul hier je gebruikersnaam en wachtwoord in en klik op Inloggen. Bij succesvolle login

Nadere informatie

ATOS Viewer for Dental Frameworks User Manual

ATOS Viewer for Dental Frameworks User Manual ATOS Viewer for Dental Frameworks User Manual www.dentwise.eu Inhoud Content NEDERLANDS... 2 1. Installatie... 2 2. Algemene Functies... 2 3. Afstanden Meten... 3 4. Doorsneden Maken... 4 5. Weergave Aanpassen...

Nadere informatie

Een website maken met databasetoegang.

Een website maken met databasetoegang. Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,

Nadere informatie

Contents. Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation

Contents. Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation TeleBank Contents Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation Introduction - TeleBank Automatic bank services Initiates a Dialog with

Nadere informatie

Handleiding voor Zotero versie 2.0

Handleiding voor Zotero versie 2.0 Handleiding voor Zotero versie 2.0 Michiel Wolda De handleiding voor Zetero is geschreven voor de lezers van het boek Deskresearch: Informatie selecteren, beoordelen en verwerken: tweede editie (Van Veen

Nadere informatie

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt

Nadere informatie

Interaction Design for the Semantic Web

Interaction Design for the Semantic Web Interaction Design for the Semantic Web Lynda Hardman http://www.cwi.nl/~lynda/courses/usi08/ CWI, Semantic Media Interfaces Presentation of Google results: text 2 1 Presentation of Google results: image

Nadere informatie

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

Nadere informatie

WebSite Director Gebruikersgids

WebSite Director Gebruikersgids WebSite Director Gebruikersgids CyberTeams, Inc. 104 South Main Street, Mt. Airy, MD 21771 301-829-6144! www.cyberteams.com CyberTeams and WebSite Director are registered trademarks of CyberTeams, Inc.

Nadere informatie

Scripting 2 TUTORIAL EEN APP ONTWIKKELEN VOOR ANDROID MET PROCESSING. ellipse(screenwidth/2, screenheight/2, 140,140); DOOR THIERRY BRANDERHORST

Scripting 2 TUTORIAL EEN APP ONTWIKKELEN VOOR ANDROID MET PROCESSING. ellipse(screenwidth/2, screenheight/2, 140,140); DOOR THIERRY BRANDERHORST Scripting 2 ellipse(screenwidth/2, screenheight/2, 140,140); TUTORIAL EEN APP ONTWIKKELEN VOOR ANDROID MET PROCESSING. DOOR THIERRY BRANDERHORST ANDROID APPLICATIES Tegenwoordig zijn er duizenden applicaties

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 7 maart 2010 Deze les Zelf componenten maken Concurrency (multithreading): werken met threads levenscyclus van een thread starten tijdelijk onderbreken wachten stoppen Zelf componenten maken Je eigen component:

Nadere informatie

Javascript oefenblad 1

Javascript oefenblad 1 Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de

Nadere informatie

Handleiding wordpress

Handleiding wordpress Handleiding wordpress Wordpress versie 3.0.4 Handleiding versie 1.1 Auteur Website Geert Hoekzema www.geerthoekzema.nl www.geerthoekzema.nl geert@geerthoekzema.nl 1 Inhoudsopgave Inleiding... 3 Beginnen

Nadere informatie

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: Eenvoudig voorbeeld. Er wordt verondersteld dat er met VS 2008 EXPRESS gewerkt wordt. Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: (Sommige schermafdrukken zijn afkomstig

Nadere informatie

NB Deze lijst is alleen beschikbaar tijdens het project! Alleen voor eigen gebruik, er kunnen geen rechten aan worden ontleend.

NB Deze lijst is alleen beschikbaar tijdens het project! Alleen voor eigen gebruik, er kunnen geen rechten aan worden ontleend. Veelgestelde vragen m.b.t. het UWP 2.0 project Versie 0.5 datum: 27-11-2012 NB Deze lijst is alleen beschikbaar tijdens het project! Alleen voor eigen gebruik, er kunnen geen rechten aan worden ontleend.

Nadere informatie

Fun met webparts in ASP.Net

Fun met webparts in ASP.Net Fun met webparts in ASP.Net Deel 2:User controls en Webparts door Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Inhoudsopgave FUN MET WEBPARTS IN ASP.NET... 1 DEEL 2:USER CONTROLS EN WEBPARTS...

Nadere informatie

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest. WAT IS EEN UNIT TEST? Een unit test is een test om de functionaliteit van stukken code te controleren. Een goede unit test waarborgt een consistente werking van een klein onderdeel (een unit ) van de broncode.

Nadere informatie

Siemens Training Handleiding Website

Siemens Training Handleiding Website Uitgave 01 This document was produced for training purposes. Siemens assumes no responsibility for its contents. The reproduction, transmission or use of this document or its contents is not permitted

Nadere informatie

Leo Rutten 18/ 2/2016

Leo Rutten 18/ 2/2016 Slides APPI 18/ 2/2016 inhoud appontwikkeling voor Situering appontwikkeling bestaat meerdere jaren als vak in MA EAICT nieuw in acjaar 2015-2016 verschuiving van het vak van MA EAICT naar motivatie de

Nadere informatie

c o n t r o l Computerbesturing voor basisscholen Laurence Rogers en Doug Dickinson, School of Education, University of Leicester

c o n t r o l Computerbesturing voor basisscholen Laurence Rogers en Doug Dickinson, School of Education, University of Leicester Logotron Junior c o n t r o l insight Computerbesturing voor basisscholen Laurence Rogers en Doug Dickinson, School of Education, University of Leicester Nederlandse bewerking van de tutorials uit de Activity

Nadere informatie

Handleiding Formulieren in TYPO3 Versie 1.2, 18 juli 2008

Handleiding Formulieren in TYPO3 Versie 1.2, 18 juli 2008 Handleiding Formulieren in TYPO3 Versie 1.2, 18 juli 2008 1. Formulieren aanmaken en plaatsen... 2 1.1 Formulieren aanmaken... 2 1.2 Formulier plaatsen op een pagina... 8 1.3 Aanmaken formulieren map...

Nadere informatie

1. Document Management

1. Document Management 1. Document Management 1.1. Revision Manager Revision Manager is een gescheiden module waarin het aanmaken van afgeleide documenten en het onderhouden van revisies moet gebeuren om de aanwezige Links te

Nadere informatie

Quick Reference Guide Site beheer SharePoint TU Delft. Bestemd voor Key Users Versie 2.0 Datum 11-06-2012 Eigenaar SSC-ICT FAB SharePoint

Quick Reference Guide Site beheer SharePoint TU Delft. Bestemd voor Key Users Versie 2.0 Datum 11-06-2012 Eigenaar SSC-ICT FAB SharePoint Quick Reference Guide Site beheer SharePoint TU Delft Bestemd voor Key Users Versie 2.0 Datum 11-06-2012 Eigenaar SSC-ICT FAB SharePoint Quick Reference guide site beheer SharePoint TU Delft 1. Introductie

Nadere informatie

Overerving & Polymorfisme

Overerving & Polymorfisme Overerving & Polymorfisme Overerving Sommige klassen zijn speciaal geval van andere klasse Docent is een speciaal geval van werknemer, dwz. elke docent is ook werknemer Functionaliteit van docent = functionaliteit

Nadere informatie

Handleiding Kaltura via Blackboard

Handleiding Kaltura via Blackboard Handleiding Kaltura via Blackboard Studenten handleiding versie 1 juni 2016 Inhoudsopgave Inloggen in Blackboard... 2 My Media... 2 Introductie My Media... 2 My Media: Add New... 5 Add New: Media Upload...

Nadere informatie

Systeem Wand Samenstellings Applicatie. Cabinet configuration tool. Nederlandse handleiding

Systeem Wand Samenstellings Applicatie. Cabinet configuration tool. Nederlandse handleiding Systeem Wand Samenstellings Applicatie Cabinet configuration tool Nederlandse handleiding 1 Handleiding bylsma wand configuratie tool... 2 1.1 Disclaimer... 2 2 Wand samenstellen... 2 2.1 Applicatie lay-out...

Nadere informatie

Webonderdelen (Web Parts)

Webonderdelen (Web Parts) Webonderdelen (Web Parts) Een SharePoint pagina is opgedeeld in een aantal zones op het scherm. In elke zone kunnen Webonderdelen, veelal Web Parts genoemd, geplaatst worden. Deze Web Parts zijn kleine

Nadere informatie

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014! Inleiding Software Engineering Unit Testing, Contracten, Debugger 13 Februari 2014 Beknopte info over Unit Testing en Contracten kan je vinden op het einde van dit document. Eclipse beschikt over een handige

Nadere informatie

Dynamische Websites. Week 10

Dynamische Websites. Week 10 Dynamische Websites Week 10 INFO Feedback vraag het in de labo s als je feedback wilt op je code Lessen op 5/12 en 12/12 om 17.15 op 19/12 om 11.00 KLEURENCODE GROEN = zelf kunnen schrijven PAARS = code

Nadere informatie

Om het Elektronica thema te installeren gaat u naar "Theme Store" in Design. Hier kunt u het Elektronica thema in 4 kleurvarianten vinden.

Om het Elektronica thema te installeren gaat u naar Theme Store in Design. Hier kunt u het Elektronica thema in 4 kleurvarianten vinden. Inhoud: 1. Installatie 2. FAQ 3. Thema instellingen 4. Meer hulp nodig? 1.Installatie: Om het Elektronica thema te installeren gaat u naar "Theme Store" in Design. Hier kunt u het Elektronica thema in

Nadere informatie

Inhoud van de website invoeren met de ContentPublisher

Inhoud van de website invoeren met de ContentPublisher Inhoud van de website invoeren met de ContentPublisher De inhoud van Muismedia websites wordt ingevoerd en gewijzigd met behulp van een zogenaamd Content Management Systeem (CMS): de ContentPublisher.

Nadere informatie

Object Oriented Programming

Object Oriented Programming Object Oriented Programming voor webapplicaties Door Edwin Vlieg Waarom OOP? Basis uitleg over OOP Design Patterns ActiveRecord Model View Controller Extra informatie Vragen OOP Object Oriented Programming

Nadere informatie

Bitrix Site Manager gebruikershandleiding BureauZuid

Bitrix Site Manager gebruikershandleiding BureauZuid Bitrix Site Manager gebruikershandleiding BureauZuid Introductie Deze gebruikershandleiding geeft gedetailleerde basisinformatie over hoe te werken met Bitrix Site Manager. Deze handleiding is bedoeld

Nadere informatie

Mini-handleiding Hootsuite

Mini-handleiding Hootsuite Mini-handleiding Hootsuite versie 1.2 24 juli 2011 Index Index... 2 Goed om te weten voor je begint... 3 Account aanmaken... 4 Sociale netwerken toevoegen... 4 Gebruiken... 7 Overzicht... 7 Menu... 8 Inrichten

Nadere informatie

3 Taken. 3.1 Inleiding. 3.2 Taken invoeren

3 Taken. 3.1 Inleiding. 3.2 Taken invoeren 3 Taken 3.1 Inleiding In dit hoofdstuk worden de meeste aspecten van taken behandeld, zoals: taken invoeren de links tussen taken gedetailleerde taakinformatie (oa duration en taaktype) kritieke taken

Nadere informatie

Hieronder volgt een overzicht van relevante contactpersonen binnen KPN Telecom.

Hieronder volgt een overzicht van relevante contactpersonen binnen KPN Telecom. 1. Contact personen 2. Rent-a-Switch service 3. Validaties 4. Afhandeling Rent-a-Switch orders 5. Foutmeldingen 1. Contact personen Hieronder volgt een overzicht van relevante contactpersonen binnen KPN

Nadere informatie

Formulieren maken met Dreamweaver CS 4/CS 5

Formulieren maken met Dreamweaver CS 4/CS 5 Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit

Nadere informatie

Handleiding CMS VOORKANT

Handleiding CMS VOORKANT Handleiding CMS VOORKANT Inhoudsopgave Pagina 1. Toegang tot het CMS... 3 2. Artikel toevoegen... 4 3. Artikel bewerken... 5 4. Artikel kopiëren of verwijderen... 6 5. Afbeelding, link of tabel invoegen...

Nadere informatie

In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip:

In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip: FORMULIEREN In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip: belangrijk Importeer formulierdata uit een CSV-bestand precies zoals verderop beschreven. 1. Gedrag

Nadere informatie

Uitleg van Glogster. hyperlinks maken naar andere websites.

Uitleg van Glogster. hyperlinks maken naar andere websites. Uitleg van Glogster Een Glog is als een poster, maar dan beter. Met Glogs kun je een online poster te maken met behulp van tekst, foto's, afbeeldingen, videobestanden en geluidsbestanden. Je kunt in je

Nadere informatie

Web Handleiding. semper vigilant Fall 2014 LOCALBOX 1.1.3

Web Handleiding. semper vigilant Fall 2014 LOCALBOX 1.1.3 Web Handleiding semper vigilant Fall 2014 Functionaliteiten web-based 2 Inloggen 2 Home 3 Uploaden: 4 Opties: 6 Map Delen: 6 Beheer Links 8 Functionaliteiten App-based 12 Hoger niveau 16 Acties op bestanden

Nadere informatie

SportCTM 2.0 Startscherm trainer

SportCTM 2.0 Startscherm trainer SportCTM 2.0 Startscherm trainer Inloggen Webapplicatie Via inlog.dotcomsport.com kun je in inloggen op de webapplicatie van het SportCTM. Wij adviseren onderstaande browsers Windows: Internet Explorer,

Nadere informatie

Bouw snel en eenvoudig een eigen mobile Virtual Reality app

Bouw snel en eenvoudig een eigen mobile Virtual Reality app Bouw snel en eenvoudig een eigen mobile Virtual Reality app Deze handleiding is opgesplitst in twee delen. Deel 1: Hoe gebruik je het Smart2VR CMS? Deel 2: Hoe gebruik je de Virtual Reality app? Deel 1:

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur 1. (2 punten per deelvraag) Deze opgave bestaat uit een aantal tekstvragen. Houd het antwoord kort: een

Nadere informatie

Je kan vanuit de RV SiteBuilder steeds terugkeren naar het controlepaneel, via de knop rechts bovenaan.

Je kan vanuit de RV SiteBuilder steeds terugkeren naar het controlepaneel, via de knop rechts bovenaan. RV SiteBuilder openen Log in op je controlepaneel met de gegevens die je van ons hebt ontvangen. Eens ingelogd, klik je helemaal onderaan, in de sectie Software/Services, op het RV SiteBuilder icoontje.

Nadere informatie

Handleiding RS Form! 1.0.4

Handleiding RS Form! 1.0.4 Handleiding RS Form! 1.0.4 Inhoud 1. Controlepaneel... 3 2. Forms Manager... 4 2.1 Nieuwe form aanmaken... 4 2.2 Nieuwe fields toevoegen... 7 2.3 Wijzigen/verwijderen bestaande Forms, Fields... 10 Versie

Nadere informatie

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases

Nadere informatie

Blackboard Toetsvragen maken in Word

Blackboard Toetsvragen maken in Word Blackboard Toetsvragen maken in Word Inleiding We gaan vragen maken in een Word en deze vragen via kopiëren en plakken vertalen naar een tekstbestand (.txt) wat Blackboard begrijpt. Opmerking: Dit is iets

Nadere informatie

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Kies File>New>Blank Page>PHP Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Geef de site een passende naam. Kies ook de juiste map voor de webdocumenten.

Nadere informatie

CENTEXBEL CLIENT WEB

CENTEXBEL CLIENT WEB CENTEXBEL CLIENT WEB Table of Contents Wat is de Centexbel Client web?... 2 Hoe een account activeren in het programma?... 2 Schermen... 4 Log in... 4 Wat als er een personeelslid met de account gegevens

Nadere informatie

H AN D L E I DI N G FORM U LI E RM AK E R

H AN D L E I DI N G FORM U LI E RM AK E R FORMULIERMAKER H AN D L E I DI N G FORM U LI E RM AK E R Versie 1.3 gepubliceerd op 21 februari 2012 D e onderdelen van een f ormul i er Met de formuliermaker (formbuilder) kunt u binnen uw website op

Nadere informatie

Handleiding CMS Online Identity Webontwikkeling. Handleiding CMS

Handleiding CMS Online Identity Webontwikkeling. Handleiding CMS Handleiding CMS 1 Inhoudsopgave 1. Inloggen... 3 2. Het CMS... 3 3. Websitecontent... 4 3.1 Een nieuwe pagina toevoegen... 4 3.2 Een pagina wijzigen... 4 3.3 Een pagina verwijderen... 5 4. De WYSIWYG editor...

Nadere informatie

Hoe kun je je op RSS-Feeds abonneren? En hoe deze te lezen. Be updated! For friends and family door : Sander van de Pol ( mei 2007 ).

Hoe kun je je op RSS-Feeds abonneren? En hoe deze te lezen. Be updated! For friends and family door : Sander van de Pol ( mei 2007 ). Hoe kun je je op RSS-Feeds abonneren? En hoe deze te lezen. Be updated! For friends and family door : Sander van de Pol ( mei 2007 ). Ik wil hier 3 manieren bespreken : - via Internet Explorer 7 - via

Nadere informatie

Leereenheid Webdesign

Leereenheid Webdesign Leereenheid Webdesign INLEIDING Deze leereenheid leert je een eenvoudige website opbouwen. Vervolgens passen we dit toe op webquest. VOORKENNIS Elementaire kennis van Web 2.0 is vereist. LEERDOELEN LEERDOELEN

Nadere informatie

NCTS - INFORMATIE INZAKE NIEUWIGHEDEN VOOR 2010

NCTS - INFORMATIE INZAKE NIEUWIGHEDEN VOOR 2010 NCTS - INFORMATIE INZAKE NIEUWIGHEDEN VOOR 2010 Op basis van het nieuwe artikel 365, lid 4 (NCTS) en het nieuwe artikel 455bis, lid 4 (NCTS-TIR) van het Communautair Toepassingswetboek inzake douane 1

Nadere informatie