SL4A - Создание графического интерфейса пользователя
Графический интерфейс пользователя (GUI) представляет собой набор графических компонентов, которые позволяют пользователю просматривать, получать доступ и взаимодействовать с функциями приложения.
Существует два основных подхода к взаимодействию пользователя с SL4A, а именно:
Диалоговые окна, такие как Alerts.
Использование HTML и JavaScript для создания пользовательского интерфейса, а затем Python для обработки любой дополнительной обработки.
В этой главе объясняются оба подхода.
Диалоговое окно Python - графические интерфейсы на основе
SL4A включает фасад пользовательского интерфейса для доступа к основным элементам пользовательского интерфейса, предоставляемым API Android. Эти функции при вызове возвращают объект результата как именованный кортеж. Каждому результату присваивается уникальный идентификатор для отслеживания. Второй элемент - результат. Он представляет собой ввод пользователя. Кортеж также включает ошибку третьего элемента, чтобы предоставить вызывающему объекту обратную связь о любой ошибке, которая могла возникнуть. Если ошибок не обнаружено, для этого элемента устанавливается значение Нет.
S.No. | Функция и описание UiFacade |
---|---|
1 | dialogGetInput Запрашивает у пользователя ввод текста. title (String) заголовок поля ввода (по умолчанию = Значение) message (String) сообщение для отображения над полем ввода (по умолчанию = введите значение :) defaultText (String) текст для вставки в поле ввода (необязательно) Результатом является ввод пользователя или None (null), если была нажата отмена. |
2 | dialogShow Показать диалог |
3 | dialogCreateAlert Создать диалоговое окно с предупреждением. title (String)(необязательный) message (String) (необязательный) |
4 | dialogDismiss Закрыть диалоговое окно. |
5 | dialogCreateDatePicker Создать диалоговое окно выбора даты. year (Integer) (по умолчанию = 1970) month (Integer) (по умолчанию = 1) day (Integer) (по умолчанию = 1) |
6 | dialogCreateTimePicker Создать диалог выбора времени. hour (Integer) (по умолчанию = 0) minute (Integer) (по умолчанию = 0) is24hour (Boolean) Использовать 24-часовой формат (по умолчанию = false) |
7 | dialogGetPassword Запрашивает у пользователя пароль. title (String) заголовок поля пароля (по умолчанию = Пароль) message (String) сообщение для отображения над полем ввода (по умолчанию = введите пароль :) |
8 | dialogGetResponse Возвращает ответ диалога. |
9 | dialogSetPositiveButtonText Установить положительный текст кнопки диалогового окна предупреждения. текст (строка) |
10 | dialogSetNegativeButtonText Установить текст кнопки диалогового окна предупреждения. текст (строка) |
11 | dialogSetNeutralButtonText Установить текст кнопки диалогового окна предупреждения. текст (строка) |
12 | dialogSetSingleChoiceItems Это создает список переключателей. |
13 | dialogSetMultiChoiceItems Это создает флажок |
14 | dialogCreateHorizontalProgress Создайте горизонтальный диалог прогресса. title (String) (необязательный) message (String) (необязательный) maximum progress (Integer) (по умолчанию = 100) |
15 | dialogCreateSpinnerProgress Создайте диалоговое окно прогресса счетчика. title (String) (необязательный) message (String) (необязательный) maximum progress (Integer) (по умолчанию = 100) |
16 | addContexMenuItem Добавляет новый элемент в контекстное меню. label (String) ярлык для этого пункта меню event (String) событие, которое будет сгенерировано при нажатии на пункт меню eventData (Object) (необязательный) |
17 | addOptionsMenuItem Добавляет новый элемент в меню параметров. label (String) ярлык для этого пункта меню event (String) событие, которое будет сгенерировано при нажатии на пункт меню eventData (Object) (необязательный) iconName (String) |
18 | webViewShow Отобразите WebView с заданным URL-адресом. url (String) wait (Boolean) блокировать, пока пользователь не выйдет из WebView (необязательно) |
19 | clearContextMenu Удаляет все элементы, ранее добавленные в контекстное меню. |
20 | clearOptionsMenu Удаляет все элементы, ранее добавленные в меню параметров |
21 год | makeToast Создать уведомление |
Примеры
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()
Модальные диалоговые окна против немодальных
Модальное диалоговое окно или окно является дочерним по отношению к другому процессу или окну. В модальном диалоговом окне обработка будет ждать или блокироваться, пока пользователь не взаимодействует с новым диалоговым окном.
Типичным примером этого случая является диалоговое окно с предупреждением. Предупреждение не закроется, пока пользователь не выполнит действие.
Следующее изображение является примером модального диалогового окна.
![](https://post.nghiatu.com/assets/tutorial/sl4a/images/modal_dialog_box.jpg)
Подводя итог, используйте модальное диалоговое окно, когда вам нужен ввод от пользователя перед продолжением выполнения.
Графические интерфейсы Python с HTML
SL4A позволяет создавать графические пользовательские интерфейсы (GUI) на основе CSS, HTML, JavaScript и Python. Подход использует HTML и JavaScript для создания пользовательского интерфейса, CSS для улучшения внешнего вида и согласованности элементов и шрифтов HTML и Python для обработки любой дополнительной обработки.
В следующем примере показан базовый пример графического интерфейса 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’])
Оба файла - Speech.html and txtToSpeech.py, должен проживать в /sdcard/sl4a/scriptsкаталог на устройстве. Запустите скрипт python, чтобы запустить HTML-файл.
Этот файл запускается webViewShowВызов API. Событие генерируется, когдаSpeak кнопка нажата.