SL4A - Construindo GUIs
Uma Interface Gráfica de Usuário (GUI) representa um conjunto de componentes gráficos que permitem ao usuário navegar, acessar e interagir com as funcionalidades do aplicativo.
Existem duas abordagens básicas para a interação do usuário com SL4A, a saber -
Caixas de diálogo como Alerts.
Usar HTML e JavaScript para construir a IU e, em seguida, Python nos bastidores para lidar com qualquer processamento adicional.
Este capítulo explica ambas as abordagens.
Caixa de diálogo Python - GUIs baseadas
SL4A inclui uma fachada de IU para acessar os elementos básicos da IU fornecidos pela API do Android. Essas funções retornam um objeto de resultado como uma tupla nomeada quando chamadas. Cada resultado é atribuído a um id único para fins de rastreamento. O segundo elemento é o resultado. Ele representa a entrada do usuário. A tupla também inclui o erro do terceiro elemento para fornecer feedback ao chamador sobre qualquer condição de erro que possa ter sido encontrada. Se nenhum erro for encontrado, este elemento é definido como Nenhum.
S.No. | Função e descrição UiFacade |
---|---|
1 | dialogGetInput Consulta o usuário para uma entrada de texto. title (String) título da caixa de entrada (padrão = valor) message (String) mensagem a ser exibida acima da caixa de entrada (padrão = Insira o valor :) defaultText (String) texto a ser inserido na caixa de entrada (opcional) O resultado é a entrada do usuário ou Nenhum (nulo) se cancelar foi atingido. |
2 | dialogShow Mostrar diálogo |
3 | dialogCreateAlert Crie um diálogo de alerta. title (String)(opcional) message (String) (opcional) |
4 | dialogDismiss Dispensar caixa de diálogo. |
5 | dialogCreateDatePicker Criar caixa de diálogo de seleção de data. year (Integer) (padrão = 1970) month (Integer) (padrão = 1) day (Integer) (padrão = 1) |
6 | dialogCreateTimePicker Crie uma caixa de diálogo de seleção de hora. hour (Integer) (padrão = 0) minute (Integer) (padrão = 0) is24hour (Boolean) Use o relógio de 24 horas (padrão = falso) |
7 | dialogGetPassword Consulta a senha do usuário. title (String) título da caixa de senha (padrão = senha) message (String) mensagem a ser exibida acima da caixa de entrada (padrão = Digite a senha :) |
8 | dialogGetResponse Retorna a resposta da caixa de diálogo. |
9 | dialogSetPositiveButtonText Definir o texto do botão positivo do diálogo de alerta. texto (string) |
10 | dialogSetNegativeButtonText Defina o texto do botão da caixa de diálogo de alerta. texto (string) |
11 | dialogSetNeutralButtonText Defina o texto do botão da caixa de diálogo de alerta. texto (string) |
12 | dialogSetSingleChoiceItems Isso cria uma lista de botões de opção. |
13 | dialogSetMultiChoiceItems Isso cria uma caixa de seleção |
14 | dialogCreateHorizontalProgress Crie uma caixa de diálogo de progresso horizontal. title (String) (opcional) message (String) (opcional) maximum progress (Integer) (padrão = 100) |
15 | dialogCreateSpinnerProgress Crie uma caixa de diálogo de progresso do botão giratório. title (String) (opcional) message (String) (opcional) maximum progress (Integer) (padrão = 100) |
16 | addContexMenuItem Adiciona um novo item ao menu de contexto. label (String) etiqueta para este item de menu event (String) evento que será gerado no item de menu clique eventData (Object) (opcional) |
17 | addOptionsMenuItem Adiciona um novo item ao menu de opções. label (String) etiqueta para este item de menu event (String) evento que será gerado no item de menu clique eventData (Object) (opcional) iconName (String) |
18 | webViewShow Exibir um WebView com o URL fornecido. url (String) wait (Boolean) bloquear até que o usuário saia do WebView (opcional) |
19 | clearContextMenu Remove todos os itens adicionados anteriormente ao menu de contexto. |
20 | clearOptionsMenu Remove todos os itens previamente adicionados ao menu de opções |
21 | makeToast Crie uma notificação |
Exemplos
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()
Caixas de diálogo Modal vs. Não Modal
Uma caixa de diálogo ou janela modal é filha de outro processo ou janela. Com uma caixa de diálogo modal, o processamento irá aguardar ou bloquear até que o usuário interaja com a nova caixa de diálogo.
Um exemplo típico desse caso é uma caixa de diálogo de alerta. O alerta não será fechado até que o usuário execute uma ação.
A imagem a seguir é um exemplo de uma caixa de diálogo modal.
Para resumir, use uma caixa de diálogo modal quando precisar de informações do usuário antes de continuar a execução.
GUIs Python com HTML
SL4A permite a construção de interfaces gráficas de usuário (GUIs) baseadas em CSS, HTML, JavaScript e Python. A abordagem usa HTML e JavaScript para construir a IU, CSS para melhorar a aparência e consistência dos elementos e fontes HTML e Python para lidar com qualquer processamento adicional.
O exemplo a seguir ilustra um exemplo básico de GUI HTML -
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’])
Ambos os arquivos - Speech.html and txtToSpeech.py, deve residir no /sdcard/sl4a/scriptsdiretório no dispositivo. Execute o script python para iniciar o arquivo HTML.
Este arquivo é lançado pelo webViewShowChamada API. O evento é gerado quando oSpeak botão é clicado.