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.