SL4A - Tworzenie GUI
Graficzny interfejs użytkownika (GUI) reprezentuje zestaw komponentów graficznych, które umożliwiają użytkownikowi przeglądanie, dostęp i interakcję z funkcjami aplikacji.
Istnieją dwa podstawowe podejścia do interakcji użytkownika z SL4A, a mianowicie:
Okna dialogowe, takie jak Alerts.
Wykorzystanie HTML i JavaScript do zbudowania interfejsu użytkownika, a następnie Python za kulisami do obsługi dodatkowego przetwarzania.
W tym rozdziale wyjaśniono oba podejścia.
Graficzne interfejsy użytkownika oparte na oknach dialogowych języka Python
SL4A zawiera fasadę interfejsu użytkownika, umożliwiającą dostęp do podstawowych elementów interfejsu użytkownika udostępnianych przez Android API. Te funkcje po wywołaniu zwracają obiekt wynikowy jako nazwaną krotkę. Każdy wynik ma przypisany unikalny identyfikator do celów śledzenia. Drugi element to wynik. Reprezentuje dane wejściowe użytkownika. Krotka zawiera również błąd trzeciego elementu, aby przekazać wywołującemu informację zwrotną o jakimkolwiek stanie błędu, który mógł wystąpić. Jeśli nie napotkano żadnych błędów, ten element ma wartość Brak.
S.No. | Funkcja i opis UiFacade |
---|---|
1 | dialogGetInput Pyta użytkownika o wprowadzenie tekstu. title (String) tytuł pola wprowadzania (domyślnie = Wartość) message (String) komunikat wyświetlany nad polem wprowadzania (domyślnie = Proszę wprowadzić wartość :) defaultText (String) tekst do wstawienia do pola wprowadzania (opcjonalnie) Rezultatem jest dane wejściowe użytkownika lub None (null), jeśli zostało trafione anulowanie. |
2 | dialogShow Pokaż okno dialogowe |
3 | dialogCreateAlert Utwórz okno dialogowe ostrzeżenia. title (String)(opcjonalny) message (String) (opcjonalny) |
4 | dialogDismiss Zamknij okno dialogowe. |
5 | dialogCreateDatePicker Utwórz okno dialogowe wyboru daty. year (Integer) (domyślnie = 1970) month (Integer) (domyślnie = 1) day (Integer) (domyślnie = 1) |
6 | dialogCreateTimePicker Utwórz okno dialogowe wyboru czasu. hour (Integer) (domyślnie = 0) minute (Integer) (domyślnie = 0) is24hour (Boolean) Użyj zegara 24-godzinnego (domyślnie = false) |
7 | dialogGetPassword Pyta użytkownika o hasło. title (String) tytuł pola hasła (domyślnie = Hasło) message (String) komunikat wyświetlany nad polem wejściowym (domyślnie = Wprowadź hasło :) |
8 | dialogGetResponse Zwraca odpowiedź w oknie dialogowym. |
9 | dialogSetPositiveButtonText Ustaw tekst pozytywnego przycisku w oknie dialogowym ostrzeżenia. Ciąg tekstowy) |
10 | dialogSetNegativeButtonText Ustaw tekst przycisku ostrzeżenia. Ciąg tekstowy) |
11 | dialogSetNeutralButtonText Ustaw tekst przycisku ostrzeżenia. Ciąg tekstowy) |
12 | dialogSetSingleChoiceItems Spowoduje to utworzenie listy przycisków opcji. |
13 | dialogSetMultiChoiceItems Tworzy to pole wyboru |
14 | dialogCreateHorizontalProgress Utwórz poziome okno dialogowe postępu. title (String) (opcjonalny) message (String) (opcjonalny) maximum progress (Integer) (domyślnie = 100) |
15 | dialogCreateSpinnerProgress Utwórz okno dialogowe postępu pokrętła. title (String) (opcjonalny) message (String) (opcjonalny) maximum progress (Integer) (domyślnie = 100) |
16 | addContexMenuItem Dodaje nową pozycję do menu kontekstowego. label (String) etykieta dla tej pozycji menu event (String) zdarzenie, które zostanie wygenerowane po kliknięciu pozycji menu eventData (Object) (opcjonalny) |
17 | addOptionsMenuItem Dodaje nową pozycję do menu opcji. label (String) etykieta dla tej pozycji menu event (String) zdarzenie, które zostanie wygenerowane po kliknięciu pozycji menu eventData (Object) (opcjonalny) iconName (String) |
18 | webViewShow Wyświetl WebView z podanym adresem URL. url (String) wait (Boolean) blokuj do momentu wyjścia użytkownika z WebView (opcjonalnie) |
19 | clearContextMenu Usuwa wszystkie elementy dodane wcześniej do menu kontekstowego. |
20 | clearOptionsMenu Usuwa wszystkie pozycje dodane wcześniej do menu opcji |
21 | makeToast Utwórz powiadomienie |
Przykłady
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()
Okna dialogowe modalne i niemodalne
Modalne okno dialogowe lub okno jest elementem podrzędnym innego procesu lub okna. W przypadku modalnego okna dialogowego przetwarzanie będzie czekać lub blokować się, aż użytkownik wejdzie w interakcję z nowym oknem dialogowym.
Typowym przykładem tego przypadku jest okno dialogowe z ostrzeżeniem. Alert nie zostanie zamknięty, dopóki użytkownik nie wykona działania.
Poniższy obraz jest przykładem modalnego okna dialogowego.
Podsumowując, użyj modalnego okna dialogowego, jeśli potrzebujesz danych wejściowych od użytkownika przed kontynuowaniem wykonywania.
GUI Pythona z HTML
SL4A umożliwia budowanie graficznych interfejsów użytkownika (GUI) opartych na CSS, HTML, JavaScript i Pythonie. Podejście wykorzystuje HTML i JavaScript do tworzenia interfejsu użytkownika, CSS w celu ulepszenia wyglądu i spójności elementów HTML i czcionek oraz Python do obsługi dodatkowego przetwarzania.
Poniższy przykład ilustruje podstawowy przykład 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’])
Oba pliki - Speech.html and txtToSpeech.py, musi znajdować się w /sdcard/sl4a/scriptskatalogu na urządzeniu. Uruchom skrypt w języku Python, aby uruchomić plik HTML.
Ten plik jest uruchamiany przez webViewShowWywołanie API. Zdarzenie jest generowane, gdySpeak przycisk jest kliknięty.