- SL4A 教程
- SL4A - 首页
- SL4A - Android概述
- SL4A - Android架构
- SL4A - Android脚本层
- SL4A - 架构
- SL4A - Python库
- SL4A - 开发环境
- SL4A - 配置您的设备
- SL4A - 浏览Android SDK
- SL4A - 使用Eclipse
- SL4A - 探索Android API
- SL4A - 构建GUI
- SL4A - 使用Python外观的实用程序
- SL4A - 使用Python的后台脚本
- SL4A - 打包和分发
- SL4A 有用资源
- SL4A - 快速指南
- SL4A - 有用资源
- SL4A - 讨论
SL4A - 构建GUI
图形用户界面(GUI)代表一组图形组件,使用户能够浏览、访问和交互应用程序的功能。
与SL4A进行用户交互主要有两种基本方法:
对话框,例如警报。
使用HTML和JavaScript构建UI,然后在幕后使用Python处理任何其他处理。
本章解释这两种方法。
基于Python对话框的GUI
SL4A包含一个UI外观,用于访问Android API提供的基本UI元素。这些函数在调用时返回结果对象作为命名元组。每个结果都被分配一个唯一的ID用于跟踪目的。第二个元素是结果。它代表用户的输入。元组还包括第三个元素error,用于向调用者提供有关可能遇到的任何错误情况的反馈。如果没有遇到错误,则此元素设置为None。
| 序号 | UiFacade函数和说明 |
|---|---|
| 1 | dialogGetInput 查询用户的文本输入。 title (字符串) 输入框的标题(默认值 = Value) message (字符串) 在输入框上方显示的消息(默认值 = 请输入值:) defaultText (字符串) 插入输入框的文本(可选) 结果是用户的输入,如果点击取消则为None(空)。 |
| 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 设置警报对话框肯定按钮文本。text (字符串) |
| 10 | dialogSetNegativeButtonText 设置警报对话框按钮文本。text (字符串) |
| 11 | dialogSetNeutralButtonText 设置警报对话框按钮文本。text (字符串) |
| 12 | dialogSetSingleChoiceItems 这将创建一个单选按钮列表。 |
| 13 | dialogSetMultiChoiceItems 这将创建一个复选框 |
| 14 | dialogCreateHorizontalProgress 创建一个水平进度对话框。 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按钮时会生成事件。