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