SL4A-GUIの構築
グラフィカルユーザーインターフェイス(GUI)は、ユーザーがアプリケーションの機能を参照、アクセス、および操作できるようにする一連のグラフィカルコンポーネントを表します。
SL4Aとのユーザーインタラクションには2つの基本的なアプローチがあります。
- などのダイアログボックス Alerts。 
- HTMLとJavaScriptを使用してUIを構築し、舞台裏でPythonを使用して追加の処理を処理します。 
この章では、両方のアプローチについて説明します。
Pythonダイアログボックス–ベースのGUI
SL4Aには、AndroidAPIによって提供される基本的なUI要素にアクセスするためのUIファサードが含まれています。これらの関数は、呼び出されると、結果オブジェクトを名前付きタプルとして返します。各結果には、追跡のために一意のIDが割り当てられます。2番目の要素は結果です。これは、ユーザーの入力を表します。タプルには、発生した可能性のあるエラー状態について呼び出し元にフィードバックを提供するための3番目の要素エラーも含まれています。エラーが発生しなかった場合、この要素は「なし」に設定されます。
| 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 指定されたURLでWebViewを表示します。 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()モーダルと非モーダルのダイアログボックス
モーダルダイアログボックスまたはウィンドウは、別のプロセスまたはウィンドウの子です。モーダルダイアログボックスでは、ユーザーが新しいダイアログボックスを操作するまで、処理は待機またはブロックされます。
この場合の典型的な例は、アラートダイアログボックスです。ユーザーがアクションを実行するまで、アラートは閉じません。
次の画像は、モーダルダイアログボックスの例です。
 
                要約すると、実行を続行する前にユーザーからの入力が必要な場合は、モーダルダイアログボックスを使用します。
HTMLを使用したPythonGUI
SL4Aを使用すると、CSS、HTML、JavaScript、およびPythonに基づいたグラフィカルユーザーインターフェイス(GUI)を構築できます。このアプローチでは、HTMLとJavaScriptを使用してUIを構築し、CSSを使用してHTML要素とフォントの外観と一貫性を強化し、Pythonを使用して追加の処理を処理します。
次の例は、基本的なHTMLGUIの例を示しています。
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ファイルを起動します。
このファイルはによって起動されます webViewShowAPI呼び出し。イベントは、Speak ボタンがクリックされます。