山西農(nóng)業(yè)大學(xué)軟件學(xué)院 楊 凡
基于Android的菜譜APP設(shè)計(jì)與實(shí)現(xiàn)
山西農(nóng)業(yè)大學(xué)軟件學(xué)院 楊 凡
菜譜APP是基于Android平臺(tái),采用java程序設(shè)計(jì)語(yǔ)言以及servlet等技術(shù)編寫(xiě)的項(xiàng)目,本文從該APP的開(kāi)發(fā)與實(shí)現(xiàn)角度,對(duì)其進(jìn)行展開(kāi)描述。
Android;Java;客戶端/服務(wù)器
在我國(guó),飲食文化博大精深,自古以來(lái),我國(guó)便有著“民以食為天”的理念。由于地大物博,中國(guó)在歷史上形成了不同菜系不同口味的美食,它們做法各異卻都深受喜愛(ài)。移動(dòng)互聯(lián)飛速發(fā)展的今天,“互聯(lián)網(wǎng)+”為我們提供了廣闊平臺(tái),結(jié)合大眾對(duì)美食的執(zhí)念,菜譜APP應(yīng)運(yùn)而生。
(1)該項(xiàng)目使用Android集成開(kāi)發(fā)平臺(tái)ADT Bundle,它不需要用戶在原有的eclipse上配置安卓環(huán)境,它是一個(gè)裝有ADT插件的Eclipse集成環(huán)境,并具備Android SDK的核心功能。
(2)該項(xiàng)目采用Java語(yǔ)言進(jìn)行編寫(xiě),它是一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,具有平臺(tái)無(wú)關(guān)性、健壯性、簡(jiǎn)單安全等特點(diǎn)。
(3)json解析是跨平臺(tái)數(shù)據(jù)格式轉(zhuǎn)換的一個(gè)橋梁,服務(wù)器端將特定的數(shù)據(jù)類型轉(zhuǎn)換為json字符串 ,客戶端將json字符串轉(zhuǎn)換成原來(lái)的類型。Json使用冒號(hào)進(jìn)行賦值,每一條賦值語(yǔ)句用逗號(hào)分開(kāi),整個(gè)對(duì)象用大括號(hào)封裝起來(lái),可用大括號(hào)分級(jí)嵌套數(shù)據(jù)。使用起來(lái)十分方便。
創(chuàng)建數(shù)據(jù)庫(kù)表recipe_table,其中包括4個(gè)字段: id,name,material,method,它們分別代表菜名、原材料和制作方法。id是該表的主鍵,int類型,不允許空值;其余的字段都為varchar類型。
圖1 數(shù)據(jù)庫(kù)表圖
該項(xiàng)目使用ADT自帶的界面編輯工具,創(chuàng)建布局文件。
界面主要包括:首頁(yè),添加界面,搜索界面,顯示界面。
圖2 工程目錄圖
圖3 工程界面
3.1.1 添加菜譜
添加菜譜功能是將一道菜的名字,材料以及制作方法添加到數(shù)據(jù)庫(kù)中。首先,創(chuàng)建布局文件activity_add_recipe.xml,先拖入一個(gè)線性布局,再分別添加三個(gè)EditText和一個(gè)Button按鈕,在三個(gè)Edit-Text中用戶可以用來(lái)輸入菜名、原材料以及制作方法,button按鈕是用來(lái)點(diǎn)擊保存該菜譜。其次,在AddRecipeActivity.java中將控件實(shí)例化,并通過(guò)findViewById找到該控件,之后再為它們?cè)O(shè)置相應(yīng)地寫(xiě)入方法和點(diǎn)擊響應(yīng)事件。
3.1.2 顯示菜譜
創(chuàng)建布局文件activity_show_local.xml,添加ListView控件。在ShowLocalActivity.java中重寫(xiě)onCreate()方法,實(shí)例化適配器控件,從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),創(chuàng)建萬(wàn)能適配器并將三者聯(lián)系起來(lái),當(dāng)用戶點(diǎn)擊列表項(xiàng)后能夠跳轉(zhuǎn)到菜譜詳情界面。
3.1.3 搜索菜譜
創(chuàng)建布局文件activity_search_result.xml,添加EditText和Button以及ListView,在SearchResultActivity.java中點(diǎn)擊搜索按鈕后判斷有無(wú)此菜譜,失敗提示“沒(méi)有查找到本地菜譜”,成功后點(diǎn)擊菜譜跳轉(zhuǎn)到菜譜界面。
3.1.4 首界面:動(dòng)態(tài)廣告牌
首頁(yè)使用Handler機(jī)制來(lái)實(shí)現(xiàn)菜品滾動(dòng)播放。廣告牌每?jī)擅敫乱淮危捎谧泳€程不能對(duì)UI進(jìn)行更新,因此使用Handler機(jī)制將消息發(fā)送到主線程中。子線程中發(fā)送消息使用方法handler.sendMassage(msg),主線程中用Handler對(duì)象中的handleMessage()方法接收消息并對(duì)UI更新。原理如圖4所示:
圖4 handler機(jī)制圖
如圖5所示,瀏覽器通過(guò)get或post方式發(fā)送請(qǐng)求,服務(wù)器端獲取請(qǐng)求的關(guān)鍵字,在數(shù)據(jù)庫(kù)中進(jìn)行查詢,將查詢到的結(jié)果進(jìn)行封裝,之后將該結(jié)果發(fā)送響應(yīng)給客戶端。response接受響應(yīng)并對(duì)封裝的數(shù)據(jù)進(jìn)行解封裝操作,然后顯示具體的菜譜信息到客戶端。核心代碼:
圖5 客戶端/服務(wù)器原理圖
本文對(duì)菜譜APP從數(shù)據(jù)庫(kù)、界面設(shè)計(jì)以及邏輯實(shí)現(xiàn)等方面進(jìn)行了闡釋,操作簡(jiǎn)單快捷。同時(shí),該項(xiàng)目還有許多功能可以補(bǔ)充,例如用戶注冊(cè)登錄、美食分享等。我們應(yīng)該利用移動(dòng)平臺(tái)的便捷性對(duì)其功能特性不斷補(bǔ)充,以提升用戶體驗(yàn)。
[1]王珊,陳紅.數(shù)據(jù)庫(kù)系統(tǒng)原理教程[M].清華大學(xué)出版社,1998.[2]毋建軍.Android[M]高級(jí)開(kāi)發(fā)技術(shù)案例教程[M].北京:清華大學(xué)出版社,2015.
楊凡(1995—),山西太谷人,大學(xué)本科,現(xiàn)就讀于山西農(nóng)業(yè)大學(xué)。