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

模態與非模態對話方塊

模態對話方塊或視窗是另一個程序或視窗的子視窗。使用模態對話方塊,處理將等待或阻塞,直到使用者與新的對話方塊進行互動。

此案例的一個典型示例是警報對話方塊。在使用者執行操作之前,警報不會關閉。

下圖是模態對話方塊的示例。

Modal Dialog Box

總而言之,當您需要在繼續執行之前獲得使用者的輸入時,請使用模態對話方塊。

使用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按鈕時會生成事件。

廣告