喬志剛+楊晨光
摘要:隨著Android手機端應用軟件產(chǎn)業(yè)的迅速發(fā)展,各式各樣的APP也隨之出現(xiàn),大部分都是與我們平時的物質(zhì)生活息息相關的。在如今這樣一個日漸富足的社會狀態(tài)下,藝術的氛圍也日益濃重,人們樂于去欣賞藝術作品,但是在應用市場上極少有藝術社區(qū)類的APP平臺供人們選擇。因此,此類的APP是具有很大市場的。 本設計是基于Android系統(tǒng)開發(fā)的藝術社區(qū)類手機移動端APP,本系統(tǒng)主要采用了黑白作為主色調(diào),極簡風來作為主風格。后臺數(shù)據(jù)通過網(wǎng)絡get/post方法從服務器端獲取數(shù)據(jù)并解析,存放到本地數(shù)據(jù)庫。將用戶信息,收藏,評論數(shù)據(jù)放到手機端后臺,建立沙盒文件并存儲到沙盒。另添加地圖定位,導航,搜索,第三方分享等功能,并增加許多提高用戶體驗性的小功能,如動畫效果,推薦等。該系統(tǒng)面向所有的Android手機用戶,打造一款可以讓用戶足不出戶便可以看遍展覽,將線下作品如數(shù)呈現(xiàn)在手機端,可進行評論收藏或分享,隨時查找藝術機構地址,也會有達人幫你解讀藝術難題,幫你看懂藝術。
關鍵詞:手機App;藝術社區(qū);數(shù)據(jù)解析;沙盒;Android
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2017)01-0037-03
古往今來,藝術一直是對于人們生活文化的一個具體體現(xiàn),很多人一生都致力于藝術研究或藝術創(chuàng)造,而這樣的藝術家也常為人們所懷念。而隨著人們生活水平的提升,越來越多的人追求精神享受,享受藝術,因此,藝術的傳播途徑和接收途徑成為一個關鍵。藝術家們需要一個平臺去展示自己的作品,機構需要一個平臺去吸引更多的群眾,而人們也需要一個平臺去接觸各種藝術作品,因此藝術社區(qū)類的APP的出現(xiàn)是市場發(fā)展的必然。
藝術社區(qū)類APP的出現(xiàn)提供了一個線上平臺,不僅使這些藝術家們可以有一個可以展示自己作品的平臺,也使廣大的藝術喜愛者有一個交流平臺,欣賞平臺,去了解國內(nèi)外的藝術作品與機構,并能參與其中,為藝術的發(fā)展貢獻自己的一份力量。
目前國內(nèi)藝術發(fā)展的大環(huán)境對于藝術家來說,除了資金的支持外,藝術家們急切期盼有一個真正符合藝術市場規(guī)律同時也符合藝術投資人要求的藝術交流平臺。對于目前國內(nèi)的藝術資源發(fā)展的程度如何,到現(xiàn)在為止,沒任何一家權威機構能夠給出確切的結論。
目前在國內(nèi)文化繁榮和經(jīng)濟發(fā)展的大背景下,發(fā)達城市和不發(fā)達城市,國家資本、民間資本、企業(yè)資本和社會資源都在進入文化藝術領域。文化場館、藝術區(qū)、美術館、畫廊在某一些發(fā)達城市,文化設施的投入力度和密度已經(jīng)超過其實際的公共需求,部分場館甚至出現(xiàn)閑置狀態(tài)。但與藝術類場館的大力建設相比,作為文化主體,真正創(chuàng)造藝術的藝術家卻得不到社會資本的重視,只有某一些幸運的藝術家得到藏家和市場的青睞,但畢竟這類藝術家所占比例還是較少[1]。
而對于廣大的人民群眾來說,獲取藝術信息的渠道也少之又少,缺少一個專門的平臺提供藝術創(chuàng)作給人們欣賞,人們想要欣賞創(chuàng)作,需要去專門的藝術機構,這對于大部分忙碌與生活的人們來說,并不現(xiàn)實,因此打消了很大一部分人接觸欣賞藝術的念頭。
現(xiàn)在人們對于吃穿住行的物質(zhì)生活方面的APP的需求很大,因為隨時隨地都可能會用到,但是對于精神生活方面的APP,如藝術社區(qū)欣賞類并沒有很大的需求量,但是國內(nèi)外還是有很大一部分藝術喜愛者和藝術從事者關注這一方面,卻苦于找不到一款好的平臺,來展示自己的作品,或接觸藝術作品,在這個行業(yè)當中,中青年藝術家的發(fā)展,是目前在藝術上可以與那些大家作品進行比較,這些藝術家遍布各行各業(yè),有的是大學教授,有的是自由藝術家,有的是大學畢業(yè)生和研究生,也有畫院的職業(yè)畫家。這個群體中的藝術家的作品,近幾年上升勢頭很好,但是,這些藝術家卻沒有受到市場足夠的關注,還未得到大家的普遍認可。
系統(tǒng)總體四層架構
本系統(tǒng)的總體架構分為四層:表現(xiàn)層,服務層,數(shù)據(jù)訪問層和業(yè)務邏輯層,如圖1所示。
1)表現(xiàn)層:現(xiàn)實與用戶的交互,呈現(xiàn)給用戶的界面。
2)服務層:提供給表現(xiàn)層的業(yè)務邏輯入口,通過定義接口服務的方式,調(diào)用接口來實現(xiàn)數(shù)據(jù)的訪問。
3)數(shù)據(jù)訪問層:本地數(shù)據(jù)遠程數(shù)據(jù)的訪問接口。
4)業(yè)務邏輯層:① 接收服務層傳來的DTO, 然后根據(jù)業(yè)務規(guī)則, 對傳入的DTO進行加工, 返回加工后的信息。② 需要為每個對象提供業(yè)務行為, 并且這些對象之間是獨立的[2]。③ 業(yè)務對象之間的交互流程通過服務層來組織。
表現(xiàn)層基本框架
表現(xiàn)層的基本框架主要分為三部分:模型層(model),視圖層(view),控制層(controller),詳細作用與設計原則如表1所示。
模型層(model),視圖層(view),控制層(controller)三部分之間的關系與通信方式:controller要與model通信使用api接口調(diào)用,model要與controller通信使用notification和KVC機制,controller要與view通信使用target-action目標行為模式、delegate代理模式、數(shù)據(jù)源來實現(xiàn),view與controller通信使用outlet控件。如圖2所示。
系統(tǒng)總共分為四個模塊:精選頁模塊、發(fā)現(xiàn)頁模塊、市集頁模塊、我的頁面模塊,詳細模塊劃分如圖3。
1)首頁精選:在首頁中瀏覽下拉刷新最新的數(shù)據(jù),上拉加載以往的數(shù)據(jù),通過每一行概要展示行可以點擊進入詳情頁,瀏覽藝術文章,進行收藏,分享到第三方平臺,點評、回復的操作,也可在詳情頁點擊進入推薦閱讀的其他藝術文章詳情頁。
2)發(fā)現(xiàn)頁:發(fā)現(xiàn)頁中包含四個部分,可以通過橫向滑動來轉(zhuǎn)換顯示在屏幕上的數(shù)據(jù)。有上拉加載和下拉刷新功能,導航條中左側(cè)點擊定位城市選擇城市來更換展覽頁只顯示該城市的數(shù)據(jù)內(nèi)容,右側(cè)點擊搜索按鈕進入搜索頁面,支持模糊搜索相關部分的內(nèi)容。通過瀏覽頁點擊進入展覽,展覽詳情頁中點擊圖片全屏查看,收藏展覽,也可分享至第三方平臺,進入作品頁可評論作品,進入機構頁可以關注機構,地圖定位功能通過詳細地址定位機構,導航路線前往機構地址。
3)市集頁:主要功能就是積分簽到制度,用戶在登陸后點擊簽到獲取每天的積分,一天只可以簽到一次,累計積分,下方的商品瀏覽頁面,點擊進入后可以查看商品的詳細信息,可以通過積分來兌換相應的商品。
4)我的頁面:這個頁面最重要的功能就是用戶的注冊登錄功能,用戶可以通過手機號注冊賬號,登錄,后臺會對用戶的密碼信息作加密保存。登陸后在我的頁面可以查看收藏列表,點評列表,粉絲列表和關注機構列表,可以對個人信息資料進行修改,修改昵稱,個人說明,通過手機相冊修改頭像等,查看產(chǎn)品的相關信息,發(fā)表相關的意見建議等。
數(shù)據(jù)庫邏輯表設計
用戶實體表如表2所示。
首頁是進入APP后顯示的第一個頁面,從網(wǎng)絡端請求數(shù)據(jù),若無數(shù)據(jù),則使用舊數(shù)據(jù),界面包括頂部使用scrollView水平滾動顯示活動信息,下方使用tableView豎向滾動顯示精選文章列表,每一行的cell可點擊進入文章詳情頁瀏覽整篇文章,其他用戶對文章的評論和系統(tǒng)推薦閱讀。具體界面如圖4所示。
點擊進入cell詳情頁之后,同樣使用tableView實現(xiàn)上下滑動,并將tableview分為兩組,將文章的詳情放在tableView的頭部,將精彩評論部分放到tableView的第一組,點擊第一組的cell可以進入評論回復頁面或全部評論頁面,將推薦閱讀部分放到tableView的第二組,點擊第二組的cell可以進入推薦閱讀的文章詳情頁面,并在導航條右側(cè)設置兩個按鈕:收藏和分享實現(xiàn)兩大功能。
進入首頁之后,用AFNetWorking從接口抓取最新數(shù)據(jù),抓取的數(shù)據(jù)為json格式,需將數(shù)據(jù)解析為OC數(shù)據(jù),以下為關鍵代碼:
-(void)loadData{
[[ActivityIndicatorToast shareToast] createActivityIndicator];
NSString *urlStr = [NSString stringWithFormat:URL,_token,_topicId];
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding ];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// GET方法
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:urlStr parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
id result = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:NULL];
NSDictionary *dataDic = [result objectForKey:@"data"];
NSArray *exhibitCommentVosArr = [dataDic objectForKey:@"exhibitCommentVos"];
NSArray *topicVosArr = [dataDic objectForKey:@"topicVos"];
for (NSDictionary *dataDic in exhibitCommentVosArr) {
CommentCellFrame *frame = [[CommentCellFrame alloc] init];
frame.comment = [DetailCommentData dataWithArr:dataDic];
[self.allData addObject:frame];}
NSString *pathComment = [MyHelpUtil documentPathBySearch:@"MyComment.archive"];
_myCommentArr = [NSKeyedUnarchiver unarchiveObjectWithFile:pathComment];
if (_myCommentArr == nil) {
_myCommentArr = [NSMutableArray array];
[NSKeyedArchiver archiveRootObject:_myCommentArr toFile:pathComment];
_myCommentArr = [NSKeyedUnarchiver unarchiveObjectWithFile:pathComment];}
for (DetailCommentData *com in _myCommentArr) {
if (com.topicId == _topicId) {
CommentCellFrame *frame = [[CommentCellFrame alloc] init];
frame.comment = com;
[_allData addObject:frame];} }
for (NSDictionary *dataDic in topicVosArr) {
HomeData *recommend = [HomeData dataWithArr:dataDic];
[self.recommendedData addObject:recommend];}
dispatch_async(dispatch_get_main_queue(), ^{
[self.myTableView reloadData];
[[ActivityIndicatorToast shareToast] stopAnimating];});
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"errr=======%@", error);
[[ActivityIndicatorToast shareToast] stopAnimating];}];}
基于Android的藝術社區(qū)類APP的開發(fā)工作,能夠穩(wěn)定地運行在手機端,實現(xiàn)了預期的基本功能需求,采用MVC的Android開發(fā)使用基本框架,采用服務器,提供API接口的方式獲取網(wǎng)絡數(shù)據(jù),解析數(shù)據(jù)存放到數(shù)據(jù)庫保存,顯示到表現(xiàn)層與用戶實現(xiàn)交互,數(shù)據(jù)庫使用了適用于手機端的SQLite輕型數(shù)據(jù)庫,也使用了第三方的框架,添加了第三方分享,第三方登錄,推送等功能。將整個系統(tǒng)分為表現(xiàn)層、業(yè)務邏輯層、數(shù)據(jù)訪問層,使得系統(tǒng)更容易開發(fā)與維護。通過對軟件各個功能和性能的測試,使APP能夠運行基本穩(wěn)定,性能可靠,基本指標達到用戶的需求,具有較好的實用性和易用性[3]。
參考文獻:
[1] 賈廷峰.拍賣行別攬畫廊的活兒[J].藝術市場,2013(19):91-93.
[2] 蹇潔,張謐,馮振翔.移動銀行系統(tǒng)架構的設計[J].數(shù)字通信,2011(4):32-35.
[3] 劉熱.《軟件測試》課程教學改革設計[J].軟件導刊,2014(1):157-159.