4.実践(ソースコードの編集)
4.4 オプションメニューの作成
メニューボタンを押した時のオプションメニューの設定をします。
Cordovaを利用した場合とネイティブを利用した場合の2通りのやり方を解説します。
<Cordovaを利用> ※ネイティブを利用はこちら
- biorhythm\www の index.html(他にも設定するページがある場合は必要に応じて)を開き、jQuery、jQuery Mobile(ここでは jQuery Mobile を使用してメニューボタンを表示)
及びオプションメニューの設定をする javascriptファイルを(ここでは main.js(cordovaをインストールした時に自動で作成される index.js でも可))を読み込むコードを記述。
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.4/jquery.mobile-1.4.4.min.css" /> <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.4/jquery.mobile-1.4.4.min.js"></script> <script src="js/main.js"></script> </head>
- biorhythm\www の index.html(他にも設定するページがある場合は必要に応じて)を開きメニューリストのコードを記述。
<div id="nav_menu" data-role="footer" data-position="fixed"> <div data-role="navbar"> <ul> <li><a href="index.html" rel="external" data-icon="home">Home</a> <li><a href="info.html" rel="external" data-icon="info">Info</a> </ul> </div> </div>
- biorhythm\www\js の main.js を開き、メニューボタンを押した時の動作を記述。
$(function() { $("#nav_menu").hide(); document.addEventListener('menubutton', function() { //メニューボタンを押した時に発生 $("#nav_menu").show(); }, false); });
メニューボタンを押した時の表示
<ネイティブを利用>
- アイコン画像を biorhythm\platforms\android\res\drawable-hdpi に保存する。
※アイコンの保存先は解像度に合わせて複数のフォルダが用意されているが、いずれかのフォルダに画像があればデバイス環境に応じて拡大・縮小されるので、ここでは一般的なスマホの大部分が対応している hdpi フォルダ(高解像度)だけに保存。
※アイコン画像は AndroidSDK\sdk フォルダで 検索(例えばホームアイコンの場合 ic_menu_home )してコピーしたり、こちらなどからダウンロードする。 - biorhythm\platforms\android\res に menu フォルダを作成し、メニュー定義ファイル(ここでは option_menu.xml
)を作成してメニューに表示する内容のコードを記述。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/item1" <!--項目を識別するためのid値--> android:icon="@drawable/ic_menu_home" <!--アイコン--> android:title="Home"/> <!--タイトル--> <item android:id="@+id/item2" android:icon="@drawable/ic_menu_info_details" android:title="Info"/> </menu>
- biorhythm\platforms\android\src\jp\co\orust\bio の CordovaApp.java を開き、メニューの初期化及び選択時の処理を定義するコードを記述。
package jp.co.orust.bio; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.webkit.WebView; import org.apache.cordova.*; public class Biorhythm extends CordovaActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.init(); // Set by <content src="index.html" /> in config.xml loadUrl(launchUrl); } // メニューの初期化 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.option_menu, menu); return true; } // メニューを選択時の処理 @Override public boolean onOptionsItemSelected(MenuItem item) { WebView webView = new WebView(this); setContentView(webView); // javascriptを有効化 webView.getSettings().setJavaScriptEnabled(true); switch (item.getItemId()) { // item1(option_menu.xmlで設定)が選択されたときの処理 case R.id.item1: webView.loadUrl("file:///android_asset/www/index.html"); break; // item2(option_menu.xmlで設定)が選択されたときの処理 case R.id.item2: webView.loadUrl("file:///android_asset/www/info.html"); break; } return true; } }
メニューボタンを押した時の表示