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()
Модальные диалоговые окна против немодальных
Модальное диалоговое окно или окно является дочерним по отношению к другому процессу или окну. В модальном диалоговом окне обработка будет ждать или блокироваться, пока пользователь не взаимодействует с новым диалоговым окном.
Типичным примером этого случая является диалоговое окно с предупреждением. Предупреждение не закроется, пока пользователь не выполнит действие.
Следующее изображение является примером модального диалогового окна.
Подводя итог, используйте модальное диалоговое окно, когда вам нужен ввод от пользователя перед продолжением выполнения.
Графические интерфейсы 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 кнопка нажата.