李曉康 王成田 張德青
摘要:論文從APP的需求分析入手,重點(diǎn)闡述了“易書”APP的框架設(shè)計(jì),UI設(shè)計(jì)。系統(tǒng)運(yùn)用Android的相關(guān)知識(shí),以Android studio軟件作為開發(fā)的主要工具,開發(fā)一款手機(jī)APP——“易書”。在該軟件中可以實(shí)現(xiàn)廢舊的紙質(zhì)圖書的重新利用,讓使用該軟件的人可以同城互換圖書,賣掉廢棄的圖書,或者捐給災(zāi)區(qū)的孩子們?nèi)ナ褂谩?/p>
關(guān)鍵詞:紙質(zhì)圖書;Android Java ;交換書籍
引言
隨著互聯(lián)網(wǎng)的興起,一批又一批的產(chǎn)業(yè)也隨之拔地而起。據(jù)統(tǒng)計(jì),移動(dòng)互聯(lián)網(wǎng)市場(chǎng)價(jià)值已由2014年的1857億元擴(kuò)張到2017年的接近6000億元的市場(chǎng)規(guī)模。從數(shù)字上看出,當(dāng)今社會(huì)的互聯(lián)網(wǎng)行業(yè)有著很大的市場(chǎng)潛力。借此契機(jī),團(tuán)隊(duì)成員在一起萌發(fā)了一個(gè)去開發(fā)一款手機(jī)APP的念頭。要開發(fā)一款A(yù)PP產(chǎn)品,需要經(jīng)歷需求分析-原型設(shè)計(jì)-開發(fā)-測(cè)試-上線的一個(gè)流程,且流程中的各個(gè)階段都無(wú)法越級(jí)實(shí)現(xiàn)。
1、“易書”APP的需求分析
此款“易書APP”可運(yùn)行于Android系統(tǒng)的設(shè)備之上,目標(biāo)是實(shí)現(xiàn)讓用戶去平臺(tái)交換自己想看的書籍。平臺(tái)開發(fā)以Java語(yǔ)言為基礎(chǔ),使用Android studio作為開發(fā)工具,采用MVC模式,對(duì)代碼進(jìn)行分層設(shè)計(jì),同時(shí)使用XML語(yǔ)言進(jìn)行界面的布局,然后再使用setContentView將內(nèi)容加載在activity中。此APP主要實(shí)現(xiàn)以下幾個(gè)功能模塊:登陸、注冊(cè)、換書、捐書、交友模塊。用戶只需將書籍信息上傳至平臺(tái)中,其他用戶便可以搜索書籍,需要該書籍的用戶可以通過本平臺(tái)去聯(lián)系發(fā)布者,詳談交換事宜。大學(xué)生若是使用了這款A(yù)PP則會(huì)大大減少畢業(yè)季廉價(jià)出售書籍的現(xiàn)象。
2、“易書APP”主要功能介紹
這一軟件主要面向在校大學(xué)生的群體,讓更多的大學(xué)生可以在線上進(jìn)行書籍的交換,同時(shí)社會(huì)人士也可以通過實(shí)名注冊(cè)加入平臺(tái),并可以進(jìn)行書籍的捐贈(zèng)等?!耙讜鳤PP”的功能框架圖如圖1所示。
2.1 以書會(huì)友
“易書APP”的用戶可以通過本平臺(tái)與發(fā)布者直接進(jìn)行交流。在交流的過程中如果發(fā)現(xiàn)對(duì)方的讀書愛好,就可以關(guān)注對(duì)方,這樣就可以實(shí)時(shí)的關(guān)注對(duì)方的動(dòng)態(tài)、讀書記錄、興趣愛好等。這樣不僅達(dá)到了書友們交換書籍的目的,還能實(shí)現(xiàn)書友之間的交流、學(xué)習(xí)。
2.2 公益捐書
“易書APP”的一個(gè)特色功能就是公益捐書,用戶可以將自己不需要的書籍捐贈(zèng)給貧困山區(qū)的孩子們。公益捐書模塊在APP的首頁(yè)中,用戶可以在該模塊中看到有關(guān)貧困山區(qū)學(xué)校的詳細(xì)信息。捐書有兩種方式,一種是用戶通過捐書模塊去捐書,另一種是用戶自己將書籍寄送到貧困山區(qū)。
2.3 換書
用戶在APP中注冊(cè)賬號(hào)后,既可以搜索所需書籍,也可以在書庫(kù)中瀏覽選擇其他書籍。這些書籍信息都是由用戶上傳到數(shù)據(jù)庫(kù)中,點(diǎn)擊書籍即可看到書籍發(fā)布者的詳細(xì)信息,如:發(fā)布者所屬地區(qū)、院校、書籍的新舊程度、換書的條件以及還包括發(fā)布者的聯(lián)系方式等。如果用戶與發(fā)布者達(dá)成共識(shí)并交易的話,用戶便可以在平臺(tái)下單。
3、“易書APP”的UI設(shè)計(jì)
3.1“首頁(yè)”UI設(shè)計(jì)
首頁(yè)在這里顯示的不僅僅是本款軟件的主要功能,還需要加上各種色彩的搭配,圖片的美化和布局的整體美觀性等等,讓用戶能有眼前一亮的效果。
3.2“我的書庫(kù)”UI設(shè)計(jì)
書庫(kù)的UI界面啟發(fā)于“掌閱讀書”,以簡(jiǎn)潔明朗為目標(biāo)的設(shè)計(jì)方案,讓用戶感受到這個(gè)書庫(kù)如同自己真正的書架一樣,不僅排列整齊,還可以顯示出書名和作者名,方便管理。
3.3“換書車”UI設(shè)計(jì)
此款換書車的UI設(shè)計(jì),是啟發(fā)于“淘寶”購(gòu)物車,我們就借鑒了這一功能的優(yōu)點(diǎn),以“簡(jiǎn)潔、實(shí)用”為設(shè)計(jì)方案,打造出我們的“易書車”——可以將自己喜歡的圖書添加到易書車中,最終再?zèng)Q定購(gòu)買哪種書。
3.4“我的”UI設(shè)計(jì)
該頁(yè)面的UI設(shè)計(jì)是對(duì)淘寶的購(gòu)物界面的改進(jìn),以“方便、好用、布局清晰”為設(shè)計(jì)方案,打造出一種讓用戶似曾相識(shí),但是又獨(dú)具一格的風(fēng)格,讓用戶在使用的過程中能方便地找到自己的需求。開發(fā)者利用原型設(shè)計(jì)來(lái)規(guī)劃APP中xml文件的布局情況。
4、系統(tǒng)設(shè)計(jì)
系統(tǒng)由兩部分組成:手機(jī)客戶端和后臺(tái)Bmob服務(wù)端??蛻舳俗鳛樾畔⒄故竞徒换サ钠脚_(tái),服務(wù)器端作為數(shù)據(jù)接收、數(shù)據(jù)的存儲(chǔ)和業(yè)務(wù)處理的平臺(tái)。
4.1 手機(jī)客戶端用戶界面的實(shí)現(xiàn)
Activity是Android系統(tǒng)提供的一個(gè)可用的用戶交互接口,程序的基本組件之一,其主要功能是提供界面,所有用戶的交互都可在其中完成。Activity在創(chuàng)建時(shí)生成各種組件和組件視圖,由這些視圖負(fù)責(zé)功能,Activity通常使用全屏模式,也有浮動(dòng)窗口模式和嵌入模式?!耙讜鳤PP”的所有頁(yè)面的實(shí)現(xiàn)便是建立在Activity之上的。
4.1.1 登錄頁(yè)面的實(shí)現(xiàn)
“易書APP”的登錄是基于Bmob后端云實(shí)現(xiàn)的,繼承了BmobUser 類的實(shí)例化對(duì)象user,調(diào)用接口的注冊(cè)方法signUp即可完成登錄,其實(shí)現(xiàn)的部分代碼如下:
if (name1.equals("")||passw1.equals(""))
{ return; }
final user userobj=new user();
userobj.setName(name1);
userobj.setPassw(passw1);
userobj.save(login_Activity.this, new SaveListener()
為了方便管理,易書APP的登錄方式采用了郵箱登錄,通過點(diǎn)擊郵箱的鏈接進(jìn)行登錄,不僅方便了忘記密碼與修改密碼,也便于用戶記憶。
4.1.2 MainActivity的實(shí)現(xiàn)
易書APP用戶頁(yè)面的實(shí)現(xiàn)是基于Activity之上的,主界面為MainActivity,在此基礎(chǔ)上分為四個(gè)Fragment頁(yè)面。頁(yè)面的切換采用BottomNavigationView+Fragment形式的底部導(dǎo)航欄。Fragment表示Activity中界面的一個(gè)行為或者一部分,可以組合多個(gè)Fragment放在單獨(dú)的Activity中以創(chuàng)建一個(gè)多區(qū)域的界面。本系統(tǒng)包括“首頁(yè)”、“書庫(kù)”、“易書車”和“我的”四個(gè)子場(chǎng)景,子場(chǎng)景活動(dòng)于主場(chǎng)景之中,從而更方便切換,并且Fragment相對(duì)于Activity更輕便,增加了頁(yè)面的切換速度。同時(shí),BottomNavigationView+Fragment的底部導(dǎo)航欄符合Material風(fēng)格,有著炫酷的切換動(dòng)畫。
4.1.3 其他頁(yè)面的實(shí)現(xiàn)
易書APP中書城的頁(yè)面通過TabHost+Fragment組成,TabHost+Fragment選項(xiàng)卡用于實(shí)現(xiàn)一個(gè)多標(biāo)簽頁(yè)的用戶界面,通過它可以將一個(gè)復(fù)雜的對(duì)話框分割成若干個(gè)標(biāo)簽頁(yè),實(shí)現(xiàn)對(duì)信息的分類顯示和管理。使用該組件不僅可以使界面簡(jiǎn)潔大方,還可以有效地減少窗體的個(gè)數(shù)。選項(xiàng)卡的文本內(nèi)容為書籍的分類,而書籍存放在不同的Fragment里,書籍的內(nèi)容通過查詢?cè)贐mob后端云里查詢顯示。
其他還有設(shè)置、我的資料、發(fā)布信息等幾個(gè)簡(jiǎn)單界面的實(shí)現(xiàn),這些子界面通過簡(jiǎn)單的界面配置文件xml就可以很容易實(shí)現(xiàn),然后添加對(duì)應(yīng)的模塊功能,完成界面各個(gè)功能的實(shí)現(xiàn)。
4.2 后臺(tái) Bmob服務(wù)端的設(shè)計(jì)
4.2.1 數(shù)據(jù)存儲(chǔ)
在易書APP中所需要用到的數(shù)據(jù)、圖片等資源,都交給Bmob后臺(tái)管理系統(tǒng)操作處理。首先創(chuàng)建應(yīng)用,然后申請(qǐng)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù),并獲得應(yīng)用所對(duì)應(yīng)的Key,最后在Android studio中Gradle Scripts腳本的 build.gradle文件中添加Bmob的maven倉(cāng)庫(kù)地址。
進(jìn)而向APP的build.gradle文件中添加compile依賴文件,Bmob會(huì)自動(dòng)更新組件所需要的資源文件。Bmob將組織后的數(shù)據(jù),經(jīng)過其內(nèi)置的封裝方法返回給平臺(tái)顯示。采用了Bmob移動(dòng)云服務(wù)后臺(tái)是因?yàn)樗峁┒鄻踊涌冢瑯O大地簡(jiǎn)化了開發(fā)步驟。
4.2.2 圖片、文字資源的上傳與下載
由于當(dāng)前手機(jī)像素都比較高,上傳的圖片資源較大,導(dǎo)致上傳和下載圖片緩慢,易書APP采用Base64編碼,將圖片資源壓縮轉(zhuǎn)換為字節(jié)數(shù)組字符串形式存儲(chǔ)到Bmob云數(shù)據(jù)庫(kù)中。下載時(shí)對(duì)字節(jié)數(shù)組字符串進(jìn)行Base64解碼并生成圖片。
將圖片資源轉(zhuǎn)換成字節(jié)數(shù)組字符串形式:
Bitmap bitmaptostring=BitmapFactory.decodeFile (path);
ByteArrayOutputStream byStream=new ByteArray OutputStream();
bitmaptostring.compress(Bitmap.CompressFormat.PNG, 5, byStream);
byte[] byte1=byStream.toByteArray();
String imgToString=new String(Base64.encodeToString (byteArray, Base64.DEFAULT));
對(duì)字節(jié)數(shù)組字符串進(jìn)行Base64解碼生成圖片:
String imgToString = s;
if (!imgToString.equals("")) {
byte[] byte2 = Base64.decode(imgString, Base64.DEFAULT);
ByteArrayInputStream byInputStream = new ByteArrayInputStream(byteArray);
Bitmap stringTobitmap = BitmapFactory.decodeStream(byStream);
imageView.setImageBitmap(stringTobitmap);
}
5、結(jié)語(yǔ)
隨著“易書APP”的發(fā)布與推廣,會(huì)有越來(lái)越多的用戶注冊(cè)使用,該軟件將會(huì)在大學(xué)校園中廣泛流傳,讓當(dāng)代大學(xué)生解決了已用書籍無(wú)處置放的問題,防止再出現(xiàn)每逢畢業(yè)季就會(huì)有很多大學(xué)生出售舊書的尬象。當(dāng)然該款A(yù)PP處于發(fā)展的初期階段,可能會(huì)在用戶使用的過程中出現(xiàn)一些問題,團(tuán)隊(duì)會(huì)不停地對(duì)軟件進(jìn)行維護(hù)和修復(fù)bug,讓用戶擁有更好的體驗(yàn)。此外,在功能方面也會(huì)進(jìn)一步完善增加,其中掃描圖書后面的二維碼上傳書籍的功能正在研發(fā)中,應(yīng)該會(huì)在下一個(gè)版本中出現(xiàn),用戶也可以通過反饋功能給我們提出建議或者發(fā)郵件給我們,我們會(huì)根據(jù)廣大用戶共同的喜好去完善APP的功能,讓用戶能更好的去使用“易書APP”。
參考文獻(xiàn):
[1] 糊涂熊.移動(dòng)互聯(lián)網(wǎng)時(shí)代的9大賺錢機(jī)會(huì).[EB/OL] http://www.jianshu.com/p/2c7c2fdadd5a 2014.10.08
[2] 羅文.Android應(yīng)用開發(fā)教程[M].北京:機(jī)械工業(yè)出版社,2013.09
[3] Clifton.I,G.Android用戶界面設(shè)計(jì)[M].北京:電子工業(yè)出版社,2013.09
作者簡(jiǎn)介:李曉康,安徽三聯(lián)學(xué)院 計(jì)算機(jī)工程學(xué)院。王成田,安徽三聯(lián)學(xué)院 計(jì)算機(jī)工程學(xué)院。
指導(dǎo)教師:張德青,碩士,講師,安徽三聯(lián)學(xué)院 計(jì)算機(jī)工程學(xué)院, 研究方向:信息管理。