SL4A - 构建 GUI

图形用户界面 (GUI) 表示一组图形组件,使用户能够浏览、访问和与应用程序功能交互。

用户与 SL4A 交互有两种基本方法,即 −

  • 对话框,例如 警报

  • 使用 HTML 和 JavaScript 构建 UI,然后在后台使用 Python 处理任何其他处理。

本章介绍了这两种方法。

基于 Python 对话框的 GUI

SL4A 包含一个 UI 外观,用于访问 android API 提供的基本 UI 元素。这些函数在调用时会将结果对象作为命名元组返回。每个结果都分配有一个唯一的 ID,以便进行跟踪。第二个元素是结果。它代表用户的输入。该元组还包括第三个元素 error,用于向调用者提供有关可能遇到的任何错误情况的反馈。如果没有遇到任何错误,则此元素设置为 None。

S.No. UiFacade 函数和说明
1

dialogGetInput

查询用户的文本输入。

title (String) 输入框的标题(默认值 = Value)

message (String) 在输入框上方显示的消息(默认值 = 请输入值:)

defaultText (String) 插入输入框的文本(可选)

结果是用户的输入,如果点击取消,则为 None (null)。

2

dialogShow

显示对话框

3

dialogCreateAlert

创建警报对话框。

title(字符串)(可选)

message(字符串)(可选)

4

dialogDismiss

关闭对话框。

5

dialogCreateDatePicker

创建日期选择器对话框。

year(整数)(默认值 = 1970)

month(整数)(默认值 = 1)

day (整数) (默认值 = 1)

6

dialogCreateTimePicker

创建时间选择器对话框。

hour (整数) (默认值 = 0)

minute (整数) (默认值 = 0)

is24hour (布尔值) 使用 24 小时制 (默认值 = false)

7

dialogGetPassword

向用户查询密码。

title (字符串) 密码框的标题 (默认值 =密码)

message(字符串)在输入框上方显示的消息(默认值 = 请输入密码:)

8

dialogGetResponse

返回对话框响应。

9

dialogSetPositiveButtonText

设置警报对话框正按钮文本。文本(字符串)

10

dialogSetNegativeButtonText

设置警报对话框按钮文本。文本(字符串)

11

dialogSetNeutralButtonText

设置警报对话框按钮文本。文本(字符串)

12

dialogSetSingleChoiceItems

这将创建一个单选按钮列表。

13

dialogSetMultiChoiceItems

这将创建一个复选框

14

dialogCreateHorizo​​ntalProgress

创建一个水平进度对话框。

title(字符串)(可选)

message(字符串)(可选)

最大进度(整数)(默认值 = 100)

15

dialogCreateSpinnerProgress

创建旋转进度对话框。

title(字符串)(可选)

message(字符串)(可选)

最大进度(整数)(默认值 = 100)

16

addContexMenuItem

向上下文菜单添加新项。

label(字符串)此菜单项的标签

event(字符串)单击菜单项时将生成的事件

eventData(对象) (可选)

17

addOptionsMenuItem

向选项菜单添加新项。

label(字符串)此菜单项的标签

event(字符串)菜单项点击时将生成的事件

eventData(对象)(可选)

iconName(字符串)

18

webViewShow

使用给定的 URL 显示 WebView。

url(字符串)

wait(布尔值)阻止直到用户退出 WebView (可选)

19

clearContextMenu

删除之前添加到上下文菜单的所有项目。

20

clearOptionsMenu

删除之前添加到选项菜单的所有项目

21

makeToast

创建通知

示例

一个简单的 Toast 示例

import android 
droid = android.Android() 
uname = droid.getInput("Enter your name") 
print uname  
droid.makeToast("Hello %s" %uname.result)

水平进度条

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()

模态对话框与非模态对话框

模态对话框或窗口是另一个进程或窗口的子进程。使用模态对话框,处理将等待或阻塞,直到用户与新对话框交互。

这种情况的典型示例是警报对话框。警报不会关闭,直到用户执行操作。

下图是模态对话框的示例。

模态对话框

总之,当您需要用户输入后才能继续执行时,请使用模态对话框。

使用 HTML 的 Python GUI

SL4A 支持基于 CSS、HTML、JavaScript 和 Python 构建图形用户界面 (GUI)。该方法使用 HTML 和 JavaScript 来构建 UI,使用 CSS 来增强 HTML 元素和字体的外观和一致性,并使用 Python 来处理任何其他处理。

以下示例说明了一个基本的 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’])

文件 − Speech.html 和 txtToSpeech.py​​ 都必须位于设备上的 /sdcard/sl4a/scripts 目录中。运行 python 脚本以启动 HTML 文件。

此文件由 webViewShow API 调用启动。单击 Speak 按钮时会生成事件。