SL4A - 构建GUI

图形用户界面(GUI)代表一组图形组件,使用户能够浏览,访问应用程序功能并与之交互.

用户交互有两种基本方法使用SL4A即 :

  • 对话框,例如警报.

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

本章介绍了这两种方法.

基于Python对话框的GUI

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

S.No.UiFacade功能&说明
1

dialogGetInput

查询用户的文本输入.

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

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

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

结果是用户的输入,如果取消了,则为None(null).

2

dialogShow

显示对话框

3

dialogCreateAlert

创建警告对话框.

title(String) (可选)

消息(字符串)(可选)

4

dialogDismiss

关闭对话框.

5

dialogCreateDatePicker

Cre吃日期选择器对话框.

年(整数)(默认= 1970)

月(整数) (默认= 1)

天(整数)(默认= 1)

6

dialogCreateTimePicker

创建时间选择器对话框.

小时(整数)(默认= 0)

分钟(整数) (默认= 0)

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

7

dialogGetPassword

查询用户的密码.

title(String)密码框的标题(默认=密码)

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

8

dialogGetResponse

返回对话框响应.

9

dialogSetPositiveButtonText

设置警告对话框正面按钮文本. text(String)

10

dialogSetNegativeButtonText

设置警告对话框按钮文本. text(String)

11

dialogSetNeutralButtonText

设置警告对话框按钮文本. text(String)

12

dialogSetSingleChoiceItems

这会创建一个单选按钮列表.

13

dialogSetMultiChoiceItems

这会创建一个复选框

14

dialogCreateHorizontalProgress

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

title(String)(可选)

message(String)(可选)

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

15

dialogCreateSpinnerProgress

创建微调器进度对话框.

title(String)(可选)

message(String)(可选)

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

16

addContexMenuItem

向contex添加新项目t menu.

标签(String)此菜单项的标签

event(String)将在菜单项上生成的事件单击

eventData(对象)(可选)

17

addOptionsMenuItem

将新项目添加到选项菜单.

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

事件(String)将在菜单项上生成的事件单击

eventData(Object)(可选)

iconName(String)

18

webViewShow

显示具有给定网址的WebView.

url (字符串)

等待(布尔)阻止,直到用户退出WebView(可选)

19

clearContextMenu

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

20
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 按钮时会生成事件.