HTML5+JavaScriptを使ってスマホアプリを開発することもできます。
ネイティブとWebアプリの機能を兼ね備えた、俗にハイブリッドアプリと呼ばれるそうです。
ここで作成するのはハイブリッドというには簡単すぎるものですが、
触りとなるものです。
まず、メインとなるアクティビティを作成します。
サンプルですので、WebViewのみ表示するものとなっています。
public class SampleActivity extends Activity {
    private final int FC = ViewGroup.LayoutParams.FILL_PARENT;
    public static WebView web;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(1);
        setContentView(linearLayout);
        web = new WebView(this);
        linearLayout.addView(web, new LayoutParams(FC, FC));
        // JavaScriptを有効にする
        web.getSettings().setJavaScriptEnabled(true);
        // JavaScriptにAPIを追加する
        web.addJavascriptInterface(new JavaScriptObject(this), "myapi");
        // スクロールバーを非表示にする
        web.setHorizontalScrollBarEnabled(false);
        web.setVerticalScrollBarEnabled(false);
        // フォーカスを有効にする
        web.setFocusable(true);
        // assetsディレクトリに用意したHTMLを読み込み
        web.loadUrl("file:///android_asset/sample.html");
    }
}
29行目のフォーカスを有効にするというのはデフォルトで有効になっていますが、
敢えて明示的に有効にしています。
どういった場合に無効にするのかと言いますと、全画面表示のゲームを作成する場合等です。
無効にする場合は引数をfalseとします。
web.setFocusable(false);
更にその場合はスリープモードにしないようにもしておいたほうがよいでしょう。
onCreateの最後にでも記述しておきましょう。
// スリープモードにしないようにする
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
次に、JavaScriptのAPIとなるクラスを作成します。 続きを読む…»