Google Material Design 學習04 - 開發 App 實戰

  • 2253
  • 0

Google Material Design 學習04 - 開發 App 實戰

操作範例影片 完整程式碼  (Chrome瀏覽器中使用記得要打開跨域)

 

App畫面

主導覽清單

主導覽圖片

指定民宿資訊

 

學習了一些Polymer為Material Design所開發的元件標籤後,想說應該可以把先前做的民宿App畫面升級。原來的民宿App強調的是很快可以實現所要的功能,不過畫面的風格實在是中規中矩,接下來就改用Material Design的元件來提升App質感吧~

 

如果還沒看過民宿App請點選此連結

 

和做菜一樣,先把我們的素材 - Polymer元件準備好,元件清單如下

 

標簽名稱

功能

備註

<core-toolbar>

工具列

放在畫面最上方,導覽本頁及切換至其他頁面

<paper-icon-button>

功能按鈕

切換頁面,並提供視覺反饋

<page-item>

清單項目

顯示指定民宿資訊

<core-header-panel>

主題面板

提供water-fall動態效果的主題面板,用來顯示民訴圖片


 

主導覽清單、主導覽圖片資料來源是同一份,只不過用不同的方式呈現,但都是使用<ul><li> 搭配 <template> 製作而成,只是利用CSS完成不同的效果。

 

主導覽清單

主導覽清單HTML

(使用JQueryMobile ListView filter功能)

<ul id="list" data-role="listview" data-inset="true" is="listview" data-filter="true">

     <li is="listview-li" style="padding:0" data-id="{{siID}}">

       <paper-item horizontal center layout class="item">

         <div>

           <img src="{{iconURI}}">

         </div><b>{{storeName}}</b>

       </paper-item>

     </li>

   </ul>

 

要將資料放入template產生畫面的JS寫法很簡單,一行就搞定了

$('#list').gk('model', models); // 用法參考

 

由於使用了JQueryMobile ListView,所以Filter功能設定一個屬性 data-filter='true' 就完成了,接下來就是處理點選 清單項目時,要切換到民宿詳細資訊的頁面

 

//註冊點選清單項目

$('#list').gk('onRow', onRow);


//取得點選的資料ID(指定民宿詳細資料)、民宿圖片

function onRow(li) {

 qq = li;

 var id = li.data('id');

 var imgSrc = li.find('img').attr('src');

 setHeaderPanel(id, imgSrc);

 changePage("#detail", "slide");

}

//切換到民宿詳細資訊頁面 (為了提供觸控視覺反饋,故意延遲0.5秒)

function changePage(pageId, tran, isR) {

 function change() {

   $.mobile.changePage(pageId, {

     transition: tran,

     reverse: isR

   });

 }

 setTimeout(change, 500);

}


 

主導覽圖片

主導覽圖片 HTML

<ul id="gallery" data-role="listview" data-inset="true" is="listview">

     <li style="display:inline-block;padding:2px" is="listview-li" data-id="{{siID}}">

       <paper-item horizontal center layout style="height:100%;padding:0px">

         <div>

           <img src="{{iconURI}}" class="ui-li-icon">

         </div>

       </paper-item>

       <div class="store">{{storeName}}</div>

     </li>

   </ul>

 

主導覽圖片和主導覽清單程式寫法一樣,就不囉唆了...

 

最後介紹指定民宿資訊的做法

這裡用到了 <core-header-panel> ,可以在畫面捲動時,動態收摺民宿照片,效果還蠻酷的。另外 class="content" 這區塊是放民宿資訊,所以挖了兩個洞 id='address' , id='remarks' 分別放民宿的地址和備註。


 

雖然不是專業設計師,不過靠著Material Design的基本導引,以及所提供的標籤元件,真的感覺改良後,整個App質感有提升。不過民宿資訊那頁還是有很大優化空間,就以後再說吧~