【スライドメニュー編】Cordovaを使ってAndroidアプリ・iPhoneアプリを開発する全工程を実況するシリーズ

こんにちは!ぐち(@bloguchi)です。

【画面作成編】Cordovaを使ってAndroidアプリ・iPhoneアプリを開発する全工程を実況するシリーズの続編です。

Sliding menu

僕が想定しているアプリにはスライディングメニューを配置したいと思います。前回のindex.htmlを下記のように変更します。スライディングメニューのサンプルは本家サイトでこちらにアップしてくださっています。有難く利用させて頂きましょう!

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="mobile-web-app-capable" content="yes" />
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">

        <script src="libs/onsenui/js/angular/angular.js"></script>
        <script src="libs/onsenui/js/onsenui.js"></script>

        <link rel="stylesheet" href="libs/onsenui/css/onsenui.css" />
        <link rel="stylesheet" href="libs/onsenui/css/onsen-css-components-blue-basic-theme.css" />
        <link rel="stylesheet" type="text/css" href="app/css/index.css">
        <title>HogeApp</title>
    </head>
    <body ng-app="app">
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="app/js/index.js"></script>

        <ons-sliding-menu menu-page="app/views/common/side_menu.html" main-page="app/views/main_list.html"
            side="left" var="menu" type="reveal" max-slide-distance="230px" swipeable="true">
        </ons-sliding-menu>
    </body>
</html>

<ons-sliding-menu>を追加しスライドメニューになるviewファイルと初期表示されるviewファイルを指定します。

ただし!menu-page=“”の部分やmain-page=“”の部分を見て頂くとファイルパスを相対的に指定していますがGoogle Chromeでは動きません。笑 ChromeはローカルファイルをAjaxで取りに行くのがNGだそうです。ブラウザで画面イメージをざっくり作るときは画面単体で作っていく必要があります。なのでindex.htmlはこれで一旦良しとしてそれぞれのページを作っていきましょう!!

どうせ実機デバッグしたときにエラーがないなんてことはあり得ないので。笑

画面を作る

Google Chromeではローカルファイルを参照できないため各画面を作っていくときにindex.htmlに書き込んで後から別のファイルに分割していく必要があるのですがそのときに使うのが<ons-template>タグです。

下記のようにidを指定してindex.htmlに複数のテンプレート(画面)を配置することができます。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="mobile-web-app-capable" content="yes" />
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">

        <script src="libs/onsenui/js/angular/angular.js"></script>
        <script src="libs/onsenui/js/onsenui.js"></script>

        <link rel="stylesheet" href="libs/onsenui/css/onsenui.css" />
        <link rel="stylesheet" href="libs/onsenui/css/onsen-css-components-blue-basic-theme.css" />
        <link rel="stylesheet" type="text/css" href="app/css/index.css">
        <title>HogeApp</title>
    </head>
    <body ng-app="app">
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="app/js/index.js"></script>
        <script type="text/javascript" src="app/js/menu.js"></script>

        <!-- <ons-sliding-menu menu-page="app/views/common/side_menu.html" main-page="app/views/main_list.html"
            side="left" var="menu" type="reveal" max-slide-distance="230px" swipeable="true">
        </ons-sliding-menu> -->
        <ons-sliding-menu menu-page="side_menu.html" main-page="main_list.html"
            side="left" var="menu" type="reveal" max-slide-distance="230px" swipeable="true">
        </ons-sliding-menu>
    </body>
</html>

<ons-template id="side_menu.html">
    <ons-page ng-controller="menuCtrl">
        <div style="color: #000000;">サイドメニュー</div>
    </ons-page>
</ons-template>

<ons-template id="main_list.html">
    <ons-page ng-controller="mainListCtrl">
        <div style="color: #000000;">メインページ</div>
    </ons-page>
</ons-template>

それぞれの<ons-template>タグ内に画面を作っていきます。<ons-sliding-menu>のページ参照も一旦コメントアウトでもしておいて同ファイル内を参照するように変更しておきます。

はじめは非常にややこしいかもしれませんがこれでやっと画面を作っていく環境が整いました。ここからざぁーっと好きな画面になるように量産してください。

では今回はこの辺で。