SL4A - Erstellen von GUIs
Eine grafische Benutzeroberfläche (GUI) stellt eine Reihe grafischer Komponenten dar, mit denen der Benutzer die Anwendungsfunktionen durchsuchen, darauf zugreifen und mit ihnen interagieren kann.
Es gibt zwei grundlegende Ansätze für die Benutzerinteraktion mit SL4A:
Dialogfelder wie Alerts.
Verwenden von HTML und JavaScript zum Erstellen der Benutzeroberfläche und anschließend Python hinter den Kulissen, um zusätzliche Verarbeitungen durchzuführen.
In diesem Kapitel werden beide Ansätze erläutert.
Python-Dialogfeld-basierte GUIs
SL4A enthält eine UI-Fassade für den Zugriff auf die grundlegenden UI-Elemente, die von der Android-API bereitgestellt werden. Diese Funktionen geben beim Aufruf ein Ergebnisobjekt als benanntes Tupel zurück. Jedem Ergebnis wird zu Verfolgungszwecken eine eindeutige ID zugewiesen. Das zweite Element ist das Ergebnis. Es repräsentiert die Benutzereingabe. Das Tupel enthält auch den dritten Elementfehler, um dem Aufrufer eine Rückmeldung über einen möglicherweise aufgetretenen Fehlerzustand zu geben. Wenn keine Fehler aufgetreten sind, wird dieses Element auf Keine gesetzt.
S.No. | UiFacade Funktion & Beschreibung |
---|---|
1 | dialogGetInput Fragt den Benutzer nach einer Texteingabe ab. title (String) Titel des Eingabefeldes (Standard = Wert) message (String) Meldung über dem Eingabefeld (Standard = Bitte Wert eingeben :) defaultText (String) Text, der in das Eingabefeld eingefügt werden soll (optional) Das Ergebnis ist die Benutzereingabe oder Keine (null), wenn Abbrechen getroffen wurde. |
2 | dialogShow Dialog anzeigen |
3 | dialogCreateAlert Warndialog erstellen. title (String)(Optional) message (String) (Optional) |
4 | dialogDismiss Dialog schließen. |
5 | dialogCreateDatePicker Datumsauswahldialog erstellen. year (Integer) (Standard = 1970) month (Integer) (Standard = 1) day (Integer) (Standard = 1) |
6 | dialogCreateTimePicker Erstellen Sie einen Zeitauswahldialog. hour (Integer) (Standard = 0) minute (Integer) (Standard = 0) is24hour (Boolean) Verwenden Sie die 24-Stunden-Uhr (Standard = falsch) |
7 | dialogGetPassword Fragt den Benutzer nach einem Passwort ab. title (String) Titel des Passwortfeldes (Standard = Passwort) message (String) Meldung über dem Eingabefeld (Standard = Bitte Passwort eingeben :) |
8 | dialogGetResponse Gibt eine Dialogantwort zurück. |
9 | dialogSetPositiveButtonText Stellen Sie den positiven Schaltflächentext des Warnungsdialogs ein. Textzeichenfolge) |
10 | dialogSetNegativeButtonText Legen Sie den Text der Alarmdialogschaltfläche fest. Textzeichenfolge) |
11 | dialogSetNeutralButtonText Legen Sie den Text der Alarmdialogschaltfläche fest. Textzeichenfolge) |
12 | dialogSetSingleChoiceItems Dadurch wird eine Liste von Optionsfeldern erstellt. |
13 | dialogSetMultiChoiceItems Dadurch wird ein Kontrollkästchen erstellt |
14 | dialogCreateHorizontalProgress Erstellen Sie einen horizontalen Fortschrittsdialog. title (String) (Optional) message (String) (Optional) maximum progress (Integer) (Standard = 100) |
15 | dialogCreateSpinnerProgress Erstellen Sie einen Spinner-Fortschrittsdialog. title (String) (Optional) message (String) (Optional) maximum progress (Integer) (Standard = 100) |
16 | addContexMenuItem Fügt dem Kontextmenü ein neues Element hinzu. label (String) Beschriftung für diesen Menüpunkt event (String) Ereignis, das beim Klicken auf den Menüpunkt generiert wird eventData (Object) (Optional) |
17 | addOptionsMenuItem Fügt dem Optionsmenü ein neues Element hinzu. label (String) Beschriftung für diesen Menüpunkt event (String) Ereignis, das beim Klicken auf den Menüpunkt generiert wird eventData (Object) (Optional) iconName (String) |
18 | webViewShow Zeigen Sie eine WebView mit der angegebenen URL an. url (String) wait (Boolean) blockieren, bis der Benutzer das WebView verlässt (optional) |
19 | clearContextMenu Entfernt alle Elemente, die zuvor zum Kontextmenü hinzugefügt wurden. |
20 | clearOptionsMenu Entfernt alle Elemente, die zuvor zum Optionsmenü hinzugefügt wurden |
21 | makeToast Erstellen Sie eine Benachrichtigung |
Beispiele
A simple Toast Example
import android
droid = android.Android()
uname = droid.getInput("Enter your name")
print uname
droid.makeToast("Hello %s" %uname.result)
A Horizontal Progress Bar
import android
droid = android.Android()
title = "Progress"
str = "Loading..."
droid.dialogCreateHorizontalProgress(title,str,100)
droid.showDialog()
for x in range(0,99)
time.sleep(0.1)
droid.dialogSetCurrentProgress(x)
droid.dialogDismiss()
Modal Vs Non-Modal Dialogfelder
Ein modales Dialogfeld oder Fenster ist einem anderen Prozess oder Fenster untergeordnet. Bei einem modalen Dialogfeld wartet oder blockiert die Verarbeitung, bis der Benutzer mit dem neuen Dialogfeld interagiert.
Ein typisches Beispiel für diesen Fall ist ein Warndialogfeld. Die Warnung wird erst geschlossen, wenn der Benutzer eine Aktion ausführt.
Das folgende Bild ist ein Beispiel für ein modales Dialogfeld.

Verwenden Sie zusammenfassend ein modales Dialogfeld, wenn Sie Eingaben des Benutzers benötigen, bevor Sie mit der Ausführung fortfahren.
Python-GUIs mit HTML
Mit SL4A können grafische Benutzeroberflächen (GUIs) auf Basis von CSS, HTML, JavaScript und Python erstellt werden. Der Ansatz verwendet HTML und JavaScript, um die Benutzeroberfläche zu erstellen, CSS, um das Erscheinungsbild und die Konsistenz von HTML-Elementen und -Schriftarten zu verbessern, und Python, um zusätzliche Verarbeitungen durchzuführen.
Das folgende Beispiel zeigt ein grundlegendes Beispiel für eine HTML-GUI:
1. Speech.html
<html>
<head>
<title>Text To Speech</title>
<script>
var droid = new Android();
var speak = function(){
droid.postEvent("say",document.getElementById("say").value);
}
</script>
</head>
<body>
<form onsubmit = "speak()";return false;”>
<label for = "say">What is your message?</label>
<input type = "text" id = "say"/>
<input type = "submit" value = "Speak"/>
</form>
</body>
</html>
2. txtToSpeech.py
import android
droid = android.Android()
droid.webViewShow(‘file:///sdcard/sl4a/scripts/Speech.html’)
while True:
result = droid.waitForEvent(‘say’).result
droid.ttsSpeak(result[‘data’])
Beide Dateien - Speech.html and txtToSpeech.pymuss in der wohnen /sdcard/sl4a/scriptsVerzeichnis auf dem Gerät. Führen Sie das Python-Skript aus, um die HTML-Datei zu starten.
Diese Datei wird von der gestartet webViewShowAPI-Aufruf. Das Ereignis wird generiert, wenn dieSpeak Schaltfläche wird angeklickt.