青幼蕾,譚妙,童強,羅琪,孫懷琳,徐帥
(1.樂山師范學院 旅游學院,四川樂山,430047;2.樂山師范學院電子與材料工程學院,四川樂山,430047)
近年來,生活水平不斷提高,社會壓力也不斷增大,所以越來越多的人出行旅游。很多人選擇各種旅行社作為出行的中介,但是站在大多數人的角度來說,他們是不愿意在享受的時候受到約束的,所以有更多的人選擇按照自己的規劃出行。那么這些游客來到各地旅游應該去哪里看一看,去哪里吃一吃才會感覺到不虛此行呢?那么為各地的游客打造一款實用的APP就迫在眉睫了。在當今社會手機已經成為人們生活中比不可少的一部分,而各地的景點的信息大都只能在PC端上搜索到,在移動端上只能看到其他游客的一些評價。為了促進各地旅游的發展,還應注重移動端的開發[1],讓用戶能夠直接了解到各地景區的最新資訊。旅游APP就為用戶定制了各地旅游值得一去的景點,規劃了游玩行程,挑選了來到當地不得不吃的美食,以及景點的地圖定位,方便快捷。
本軟件啟動后進入主界面后,可以點擊切換到“概覽”、“景點”、“行程”以及“美食”四個界面,通過點擊每個界面里面的控件或者item可以跳轉到對應的Activity里面進行item的詳細展示,再點擊Toolbar中的返回按鈕又可以回到主界面;在主界面里通過側滑可以跳轉到登錄界面[2]。從上面的描述中總結起來,系統具有以下的功能需求:(1)正常啟動APP;(2)顯示主界面:概覽攻略、熱門景點、行程路線以及重慶美食和登錄界面;(3)子界面展示:通過點擊主界面的item能夠跳轉到Activity進行詳細介紹。
Android最開始是使用Eclipse搭建的開發環境[3]。Android開發至今已有二十幾個版本,現在很多人仍然在使用Eclipse,其實Google公司已經推出了新的編程工具Android Studio。與Eclipse相比,Android在構建程序界面更方便,編輯歷史、打印日志更詳細;添加了智能識別功能,并且資源文件可以在代碼中進行預覽。所以,今后的趨勢更偏向于使用Android Studio。
進入Android開發者網站(http://www. androiddev tools.cn/)下載Android Studio,選擇適合自己平臺的Android Studio,最好是已經帶了SDK和JDK[4],如圖1的第一個。下載后只需要按照步驟直接安裝,成功后就可以新建項目寫代碼了。

圖1 Android Studio版本
本軟件是一款旅游類型的軟件,展示界面較多,本文挑了3個具有代表性的界面做詳細介紹:
(1)在登錄界面中有點擊返回按鈕(Toolbar)、頭像、頭像背景、用戶名、密碼以及登錄和注冊按鈕。
(2)在MainActivity的景點這個Fragment的界面中有點擊側滑登錄按鈕(Toolbar)、底部導航、頂部導航以及景點的item。
(3)在美食點進去的Activity里面有前一個頁面傳遞過來的美食圖片,美食名字,美食簡介以及美食的item。
根據以上三點,分別設計其界面布局,如圖2所示。

圖2 界面示意圖
本軟件中的數據基本上存儲在數據庫中,考慮到方便性和性價比問題,本軟件使用的是云數據庫Bmob[5]。Bmob有以下優點:第一點,能夠輕松搭建數據庫,可直接對數據庫表進行增、刪、改、查操作,它支持10種不同數據類型存儲,例如String,Number,數組等;第二點,支持多種文件的上傳和存儲,例如圖片、視頻、音頻、文檔等,并且使用了CDN加速服務、多語言SDK和Bmob提供的API接口能夠讓數據快速上傳,安全可靠;第三點,邏輯實現非常靈活,支持在線編寫和調試代碼,可輕松實現業務需求;第四點,支持定時更新,例如每天24點準時更新獲獎名單,如果配合云邏輯使用,能夠實現更加復雜的業務。
要使用Bmob云數據庫只需要在它的官網上注冊一個賬號,成功后就可以申請創建數據庫了。要將數據庫應用到APP中需要獲取對應的Key[6],下載對應版本的SDK并將其嵌入到移動應用中,便可操作了,程序模塊如圖3所示,源代碼結構如圖4所示。

圖3 應用程序結構

圖4 工程源碼結構
應用登錄界面是每個APP中必不可少的,它能夠將用戶對該軟件使用的信息進行保存,方便用戶再次使用,其界面設計如圖5所示。該頁面包括登錄和注冊兩個功能,實現原理差不多。輸入用戶信息后點擊登錄時,第一步,判斷是否輸入用戶名,若用戶名為空,彈出“用戶名不能為空”并返回。第二步,判斷密碼是否為空,若密碼為空,彈出“密碼不能為空”并返回,第三步,當用戶名和密碼均不為空時,去數據庫根據用戶名查找數據。第四步,判斷輸入密碼與數據庫查找密碼是否一致,若不一致彈出“用戶名或密碼錯誤”;若一致彈出“登錄成功”并跳轉到主界面MainActivity[7]。由此完成登錄功能。

圖5 登錄界面
以重慶為例,景點界面又有“重慶熱門景點”、“紅色之旅不可錯過”、“巴渝文化之最佳體驗地”、“重慶周邊最美古鎮”四個子界面,通過點擊頂部的四個按鈕來進行切換,其實就是一個頂部導航功能的實現,如圖6所示。

圖6 景點界面
行程界面的布局設計有兩種類型,LinearLayout和列表,如圖7所示。在這個界面中由于LinearLayout所需要的數據較少,可直接采用靜態加載數據,就是在設置子控件屬性的時候,數據均采用資源文件里面的。而列表中需要加載許多的數據,所以采用動態加載數據[8]。如果是字符串可以輕松加載,但是圖片則非常麻煩,如果處理不好會出現內存溢出的情況,所有Android開發人常使用框架來完成。常用的圖片處理框架有ImageLoader、Picasso、Glide、Fresco四種,在本軟件中采用Picasso來完成圖片加載,因為Picasso自帶統計監控功能,支持優先級處理等。

圖7 行程界面
美食界面其實主要展示的是兩個列表,而且都是使用RecycleView來說實現的,如圖8所示。RecyclerView是新出來的Android 5.0 materials design中的組件之一,它不僅提供了一種耦合度更低的方式來復用ViewHolder,還可以輕松實現ListView、GridView以及瀑布流三種效果,本設計中實現了前面兩種效果。

圖8 美食界面
(1)當什么都沒輸入或者只輸入密碼,點擊登錄或注冊時,打印日志“用戶名不能為空”。
(2)當沒有輸入了用戶名沒有輸入密碼,點擊登錄或者注冊時,打印日志“密碼不能為空”。
(3)當密碼輸入錯誤時,點擊登錄按鈕會打印日志“用戶名或密碼錯誤”和輸入錯誤的密碼。
(4)當用戶名和密碼均輸入正確時,點擊登錄或注冊會打印日志“登錄成功”
(5)當輸入了用戶名和密碼,而該用戶名已經被注冊,這時點擊注冊會打印日志“該用戶已注冊”和注冊的用戶名。
(6)當輸入用戶名和密碼,而用戶名未被注冊時,打印日志“注冊成功”。

圖9 測試效果圖
本軟件中幾乎所有的數據都存儲在云數據庫中,所以都需要進行網絡請求才能獲取到。比如實現美食界面的網格布局列表,當進入該頁面時,打印出數據條數和詳細數據。

圖10 網絡測試效果圖