2014年10月4日土曜日

Titanium Tips: Titanium で図形描画、WebView の利用

Titanium の開発で図形描画の解決方法として、デザインの統一性さえゆるせば WebView +Javascript の描画ライブラリを使うという方法があります。
実際、私のアプリケーションではグラフを描くのに、WebView と Flot: Attractive JavaScript plotting for jQuery を組み合わせて実現しました。

公式の Using Local Web Content with WebView にあるように WebView は local な HTML/javascript などを読み込み可能です。
例えば、Alloy の View 側で app/assets/etc/local.html を読み込むには次のように
<Window title="hogehoge">
        <WebView id="webview" url="/etc/local.html"></WebView>
</Window>
という指定になります。
local.html 側では
<head>
<title>Local HTML</title>
<link rel="stylesheet" type="text/css" href="local.css"/>
<script src="local.js"></script>
</head>
と書くと local.html と同階層=app/assets/etc 配下の local.css, local.js を読み込み、利用することが出来ます。
(もちろん、local.html 内でも Javascript を記述可能)

また、local な Javascript の利点として次の2点があります。
特に、Ti.App.fireEvent() と Ti.App.addEventListener() を使うことで、Titanium 側の通常の Javascript のコードと WebView内の Javascript とで相互に通信が出来るのは、必須とも言える機能です。詳しい説明やサンプルは公式の Communication Between WebViews and Titanium を参照してみて下さい。

注意点としては、javascript を script タグなどで静的に読み込みしてしていなくて、生成した HTML で読み込むようなケース。
そのような場合には
For local JavaScript files not referenced in static local HTML files, for example, a dynamically-genereated HTML file referencing a local JavaScript file, rename the file extension of the local JavaScript files to '.jslocal' instead of '.js'.
とあるように拡張子を .js → .jslocal に変える必要があるようです。

0 件のコメント:

コメントを投稿