支持国产操作系统国产应用!

捉蛋网

当前位置: 捉蛋网>教程>Android开发>

使用WebView制作程序界面

时间:2013-06-05 16:34来源: 作者: 点击:
  API 中的webViewShow(url)方法是用来使用WebView打开给定URI对应的自定义HTML页面(当然也可以使用file://形式的URI)。WebView为他所有支持的语言提供基本一样的android类。

  var droid = new Android();

  不过与在其他语言中不同的是,Android类在WebView中提供了一个额外的方法 registerCallback():

  droid.registerCallback("event_name", function(data) { alert(data); });

  这个特定的回调函数会在指定名称的事件(event_name)抛出时被调用,例如:

  <html>
    <head>
      <title>Sensor Monitor</title>
    </head>
    <body>
      <div>X-Force: <div id="xforce" style="display: inline;" /></div>
      <div>Y-Force: <div id="yforce" style="display: inline;" /></div>
      <div>Z-Force: <div id="zforce" style="display: inline;" /></div>
        <script>
          var droid = new Android();
          var display = function(data) {
            document.getElementById("xforce").innerHTML = data.data.xforce;
            document.getElementById("yforce").innerHTML = data.data.yforce;
            document.getElementById("zforce").innerHTML = data.data.zforce;
          }
          droid.startSensing();
          droid.registerCallback("sensors", display);
        </script>
    </body>
  </html>

  使用WebView并不需要使用另一种后台语言,HTML解释器使用执行Python脚本的方式执行HTML文件(就像上面的代码)。

  如果想使用python语言调用WebView,可以通过事件来解决WebView和调用语言间的相互沟通问题。无论是python发出的事件或者WebView中js发出的事件,都可以被另一方接收处理。

  使用python响应js抛出的事件

  让我们先来看一个用纯JS写的例子。

  <html>
    <head>
      <title>Text to Speech</title>
      <script>
        var droid = new Android();
        var speak = function() {
          droid.ttsSpeak(document.getElementById("say").value);
        }
      </script>
    </head>
    <body>
      <form onsubmit="speak(); return false;">
        <label for="say">What would you like to say?</label>
        <input type="text" id="say" />
        <input type="submit" value="Speak" />
      </form>
    </body>
  </html>

  在文本框中输入文本并点击提交按钮,将会调用TTS API中的方法将文本框中内容读出来。将上面的代码保存到文件中,并命名为text_to_speech.html。现在我们使用python脚本调用WebView打开这个文件。

  python代码如下:

  import android
  droid = android.Android()
  droid.webViewShow('file:///sdcard/sl4a/scripts/text_to_speech.html')

  运行这个Python脚本将会在WebView中打开text_to_speech.html文件。当然,WebView会保持打开,就像之前一样工作。

  现在我们修改HTML中的内容,使他可以出发一个事件,并在python中进行处理:

  <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 would you like to say?</label>
        <input type="text" id="say" />
        <input type="submit" value="Speak" />
      </form>
    </body>
  </html>

  我们也需要修改python中的部分代码,如下所示:

  import android
  droid = android.Android()
  droid.webViewShow('file:///sdcard/sl4a/scripts/text_to_speech.html')
  while True:
    result = droid.waitForEvent('say').result
    droid.ttsSpeak(result['data'])

  这个代码片段演示了python脚本是如何等待并处理js脚本触发的“say”事件。当一个“say”事件到达时,python将会使用TTS API中的方法将随事件传递的数据读出来。

(责任编辑:捉蛋网-刷机)
............................................................................................... ...............................................................................................

 

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------