Processing Apps für Android – Optionsmenü


Nachdem Optionsmenüs für Android-Apps enorm wichtig sind, hier ein Code-Beispiel, wie man eines erstellen kann.

Als Beispiel habe ich die Funktion Vieleck aus dem basic-Artikel Winkel und Wellen gewählt, in dem man dann die Eckenzahl mit Hilfe eines Optionsmenüs wählen kann. Die Funktion ist, wie in den anderen Artikeln auch, einfach gewählt, damit der Fokus auf den eigentlichen Inhalten bleibt. In diesem Fall das Optionsmenü.

  • Processing Sketches laufen in Android als Activity, d.h. die Processing-Klasse PApplet erweitert die Klasse Acitvity. In so fern stehen auch alle Methoden der Acitvity-Klasse zur Verfügung.
  • menu.add(0, DREI_ID, Menu.NONE, „3“); erzeugt einen Menüeintrag, wobei 0 die goupId, DREI_ID die itemId, Menu.NONE die Reihenfolge und „3“ den Titel des Menüpunkts definieren. Menu.NONE wird angegeben, wenn die Reihenfolge der Einträge egal ist
//Imports für die Anzeige des Menüs
import android.view.Menu;
import android.view.MenuItem;

int ecken = 5; //Anzahl der Ecken beim Start
int winkel;
float x1, y1, x2, y2;

//IDs der Menüeinträge werden zugewiesen
public static final int DREI_ID =  Menu.FIRST;
public static final int VIER_ID =Menu.FIRST+2;
public static final  int FUENF_ID = Menu.FIRST+3;
public static final int SECHS_ID = Menu.FIRST+4;
public static final int ACHT_ID = Menu.FIRST+5;

void setup() {
 smooth();
}

void draw() {
 fill(255, 20);
 rect(0, 0, width, height);
 vieleck(ecken, mouseX, mouseY, 10, 10);
}

void  vieleck (int seiten, int x, int y, int radiusX, int radiusY) {
 winkel = (int) 360/seiten;
 for (int grade=0; grade<360; grade+=winkel) {
 x1 =sin(radians(grade))*radiusX+(x);
 y1 =cos(radians(grade))*radiusY+(y);
 x2 =sin(radians(grade+winkel))*radiusX+(x);
 y2 =cos(radians(grade+winkel))*radiusY+(y);
 line(x1, y1, x2, y2);
 }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
 // hier werden die einzelnen Menüeinträge erzeugt
 menu.add(0, DREI_ID, Menu.NONE, "3");
 menu.add(1, VIER_ID, Menu.NONE, "4");
 menu.add(2, FUENF_ID, Menu.NONE, "5");
 menu.add(3, SECHS_ID, Menu.NONE, "6");
 menu.add(4, ACHT_ID, Menu.NONE, "8");
 return super.onCreateOptionsMenu(menu);
}

//wird aufgerufen, wenn ein Menüpunkt ausgewählt worden ist
@Override
public boolean onOptionsItemSelected(MenuItem item) {
 //die Auswahl wird über die ItemId des Menüpunktes überprüft
 switch (item.getItemId()) {
 case DREI_ID:
 ecken=3;
 break;

 case VIER_ID:
 ecken=4;
 break;

 case FUENF_ID:
 ecken=5;
 break;

 case SECHS_ID:
 ecken=6;
 break;

 case ACHT_ID:
 ecken=8;
 break;
 }
 return super.onOptionsItemSelected(item);
}

Das wars!

Advertisements

Ein Kommentar

  1. Pingback: Processing – Über dieses Weblog « processing – tutorial

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: