国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android的自定義通用可視化控件①

2017-02-20 07:40鄭秋梅
關(guān)鍵詞:折線(xiàn)圖柱狀圖控件

鄭秋梅, 劉 真, 蘇 政, 李 松

?

基于Android的自定義通用可視化控件①

鄭秋梅, 劉 真, 蘇 政, 李 松

(中國(guó)石油大學(xué)(華東) 計(jì)算機(jī)與通信工程學(xué)院, 青島 266580)

基于存在Android系統(tǒng)控件不能完全滿(mǎn)足開(kāi)發(fā)人員需求的情況, 提出一種自定義通用可視化控件, 介紹了基于Android開(kāi)發(fā)的UI設(shè)計(jì)原理和圖表的實(shí)現(xiàn)方法, 著重討論了該自定義控件中使用的AsyncTask異步任務(wù)機(jī)制. 控件包括圓形圖、柱狀圖和折線(xiàn)圖三個(gè)圖表, 其中圓形圖可以動(dòng)態(tài)地顯示. 應(yīng)用實(shí)驗(yàn)表明, 該控件修改簡(jiǎn)單, 使用方便, 具有較強(qiáng)的通用性.

Android; 自定義; 控件; 異步; 通用性

在進(jìn)行Android應(yīng)用系統(tǒng)開(kāi)發(fā)時(shí), 經(jīng)常需要使用各種系統(tǒng)控件來(lái)設(shè)計(jì)UI(用戶(hù)界面). Android系統(tǒng)本身提供了許多控件, 經(jīng)常用到的有: 文本框(TextView)與編輯框(EditText)、按鈕(Button)與圖片按鈕(ImageButton)、單項(xiàng)選擇(RadioGroup)與復(fù)選框(CheckBox)、圖片視圖(ImageView)、狀態(tài)開(kāi)關(guān)按鈕(ToggleButton)和時(shí)鐘(AnalogClock和DigitalClock)等. 此外, 還可以使用一些高級(jí)控件, 如下拉列表(Spinner)、進(jìn)度條(ProgressBar)和滾動(dòng)視圖(ScrollView)等[1]. 大多數(shù)情況下這些Android系統(tǒng)控件可以滿(mǎn)足應(yīng)用開(kāi)發(fā)的需求, 但仍然存在現(xiàn)有控件不能完全實(shí)現(xiàn)系統(tǒng)功能的問(wèn)題. 例如有時(shí)系統(tǒng)需要設(shè)計(jì)圖表控件來(lái)顯示數(shù)據(jù), Web開(kāi)發(fā)中有比較多的開(kāi)源方案, 圖表繪制相對(duì)較容易. 但在Android系統(tǒng)中的開(kāi)源方案并不多, 因此需要開(kāi)發(fā)者從現(xiàn)有的控件派生或重寫(xiě)控件屬性、方法或事件來(lái)創(chuàng)建自定義控件, 實(shí)現(xiàn)用戶(hù)的特殊需求.

自定義控件是一項(xiàng)十分靈活的新興技術(shù), 具有可編程性和可復(fù)用性. 該技術(shù)對(duì)外部環(huán)境開(kāi)放且能被各種環(huán)境使用, 正被越來(lái)越多的應(yīng)用程序開(kāi)發(fā)者所關(guān)注. 鑒于自定義控件的靈活性以及應(yīng)用程序支持插入控件這個(gè)功能[2-5], 本文通過(guò)設(shè)計(jì)一個(gè)基于Android的自定義通用控件, 實(shí)現(xiàn)了統(tǒng)計(jì)數(shù)據(jù)的可視化展示. 該控件由圓形圖、柱狀圖和折線(xiàn)圖三個(gè)圖表組成, 通過(guò)自定義View層和設(shè)置Paint、Canvas等類(lèi)的屬性實(shí)現(xiàn)它們的繪制, 并采用AsyncTask異步任務(wù)機(jī)制重寫(xiě)其中關(guān)鍵方法, 實(shí)現(xiàn)后臺(tái)任務(wù)初始化、調(diào)用webservice接口和將后臺(tái)任務(wù)結(jié)果更新到UI等功能. 本文自定義控件的通用性體現(xiàn)在: 一是可通過(guò)更改輸入數(shù)據(jù)來(lái)實(shí)現(xiàn)類(lèi)似的統(tǒng)計(jì)可視化問(wèn)題, 二是可增加或修改繪制圖表的類(lèi), 實(shí)現(xiàn)任意圖表的顯示. 該控件已應(yīng)用于開(kāi)發(fā)完成的手機(jī)端數(shù)字校園系統(tǒng)中, 實(shí)現(xiàn)用戶(hù)對(duì)校園一卡通消費(fèi)統(tǒng)計(jì)的查詢(xún)功能.

1 關(guān)鍵技術(shù)介紹

1.1 View層介紹

在開(kāi)發(fā)一款手機(jī)應(yīng)用軟件時(shí), UI設(shè)計(jì)是其中至關(guān)重要的部分. 好的用戶(hù)界面能夠激發(fā)用戶(hù)的興趣, 給其帶來(lái)優(yōu)越的用戶(hù)體驗(yàn). Android系統(tǒng)借助了Java的UI設(shè)計(jì)思想, 包括事件響應(yīng)機(jī)制和布局管理, 給開(kāi)發(fā)人員提供了諸如菜單、對(duì)話(huà)框、按鈕和進(jìn)度條等豐富的可視化用戶(hù)界面. 這使得開(kāi)發(fā)者能夠?yàn)閺V大的Android用戶(hù)設(shè)計(jì)出非常人性化、極具親切感的界面[6].

View是Android系統(tǒng)中圖形界面的基類(lèi), 提供給用戶(hù)可視化的界面. View又分為兩個(gè)子類(lèi), 即View和ViewGroup. 其中View包含一些基本組件, 例如菜單、按鈕、列表等, 一個(gè)View對(duì)應(yīng)界面上的一個(gè)矩形區(qū)域, 它負(fù)責(zé)該區(qū)域的屬性設(shè)置和事件處理等. 而ViewGroup則可以看成是容納View的一個(gè)容器, 負(fù)責(zé)裝載和管理界面上的各種View來(lái)排列布局. Android的用戶(hù)界面都是由View和ViewGroup以及它們的派生類(lèi)組合而成的, 因此UI可以用View的樹(shù)形結(jié)構(gòu)來(lái)表示, 如圖1所示.

圖1 Android用戶(hù)界面樹(shù)形結(jié)構(gòu)圖

對(duì)于本文設(shè)計(jì)的自定義控件, 圖表的可視化是其最終目的, 因此自定義View層并為其增加屬性是重要任務(wù).

1.2 繪制圖形

本文討論的問(wèn)題中, 需要將數(shù)據(jù)的統(tǒng)計(jì)結(jié)果以圖表的方式進(jìn)行清晰直觀的可視化展示, 因此需要繪制圖形. Android的graphics包提供了很多操作二維圖形的類(lèi), 可以利用這些類(lèi)來(lái)實(shí)現(xiàn)繪圖功能. 在本控件中, 為圓形圖、柱狀圖和折線(xiàn)圖分別定義了ICardConsume Arc、ICardConsumeColume和ICardConsumeLine三個(gè)繼承自View的類(lèi)來(lái)實(shí)現(xiàn)各自的繪圖功能, 其中主要用到的工具類(lèi)有Paint、Canvas和Path.

① Paint: 要實(shí)現(xiàn)繪圖功能, 首先需要畫(huà)筆工具, Paint類(lèi)便是Android的畫(huà)筆. 它包含了繪制幾何圖形、文本和位圖所需的一些風(fēng)格和顏色信息, 如線(xiàn)寬、字體和大小等. 通過(guò)Paint類(lèi)提供給用戶(hù)的公共方法, 可以對(duì)其屬性進(jìn)行設(shè)置[6].

② Canvas: 各類(lèi)圖形是要在一張畫(huà)布上繪制的, Canvas類(lèi)則實(shí)現(xiàn)了畫(huà)布這一功能. 在繪制圖形之前, 需要對(duì)Canvas設(shè)置一些畫(huà)布的屬性, 如畫(huà)布的顏色、尺寸等[6].

③ Path: 在進(jìn)行畫(huà)線(xiàn)等操作時(shí)還需要連接路徑, 這個(gè)工具由Path提供[6,7], Path類(lèi)中包含一些直線(xiàn)或曲線(xiàn)連接到指定點(diǎn)的方法. 該自定義控件中的折線(xiàn)圖則使用Path類(lèi)進(jìn)行直線(xiàn)的連接.

合理利用這些工具類(lèi), 則可以在手機(jī)界面設(shè)計(jì)并繪制開(kāi)發(fā)人員需要的各種可視化圖形.

1.3 AsyncTask異步任務(wù)機(jī)制

由于本文設(shè)計(jì)的自定義控件包含圓形圖、柱狀圖和折線(xiàn)圖三個(gè)圖表, 且跳轉(zhuǎn)到該功能Activity時(shí), 三個(gè)圖表的后臺(tái)任務(wù)是并發(fā)執(zhí)行的, 因此涉及多線(xiàn)程異步任務(wù)處理問(wèn)題.

在Android中實(shí)現(xiàn)異步任務(wù)機(jī)制有Handler和AsyncTask兩種方式. 前者需要為每一個(gè)任務(wù)創(chuàng)建一個(gè)新的線(xiàn)程, 任務(wù)完成后通過(guò)Handler實(shí)例向UI線(xiàn)程發(fā)送消息, 完成界面的更新. 這種方式對(duì)于整個(gè)過(guò)程的控制比較精細(xì), 可以處理較為復(fù)雜的線(xiàn)程間通信及消息處理, 但也存在缺點(diǎn), 例如代碼相對(duì)臃腫, 在多個(gè)任務(wù)同時(shí)執(zhí)行時(shí), 不易對(duì)線(xiàn)程進(jìn)行精確的控制等. AsyncTask是Android提供的一個(gè)輕量級(jí)的基于多線(xiàn)程的進(jìn)行后臺(tái)異步工作處理的類(lèi), 在后臺(tái)的工作比較簡(jiǎn)單, 只需要向UI線(xiàn)程傳遞一些簡(jiǎn)單數(shù)據(jù), 不再需要編寫(xiě)任務(wù)線(xiàn)程和Handler實(shí)例, 只使用AsyncTask類(lèi)即可[8]. 使用AsyncTask類(lèi)的方法是創(chuàng)建一個(gè)子類(lèi), 重寫(xiě)該類(lèi)中的相關(guān)方法, 通過(guò)在UI線(xiàn)程中調(diào)用execute()方法運(yùn)行這個(gè)自定義類(lèi).

使用AsyncTask類(lèi)時(shí), 要重寫(xiě)它的子類(lèi). 需要重寫(xiě)的方法如下:

① onPreExecute(): 當(dāng)后臺(tái)任務(wù)的execute()方法被調(diào)用后, 該方法立即執(zhí)行, 一般用于一些初始化操作和在界面上顯示后臺(tái)任務(wù)的初始狀態(tài).

② doInBackground(Params…): 當(dāng)onPreExecute()方法被調(diào)用后, 該方法被執(zhí)行, 用于執(zhí)行一些較為費(fèi)時(shí)的后臺(tái)任務(wù). 在任務(wù)執(zhí)行過(guò)程中可以調(diào)用publishProgress(Progress…)方法來(lái)更新程序界面.

③onProgressUpdate(Progress…): 在調(diào)用publishProgress(Progress…)方法后, 該方法被執(zhí)行用來(lái)將進(jìn)度信息更新到UI上.

④ onPostExecute(Result): 當(dāng)后臺(tái)任務(wù)全部執(zhí)行結(jié)束后, 該方法被調(diào)用, 用來(lái)將計(jì)算結(jié)果更新顯示到用戶(hù)界面[9].

上述方法包含3類(lèi)參數(shù). Params表示后臺(tái)任務(wù)執(zhí)行時(shí)傳入?yún)?shù)的類(lèi)型; Progress表示后臺(tái)任務(wù)執(zhí)行的進(jìn)度; Result表示后臺(tái)任務(wù)執(zhí)行結(jié)束后返回計(jì)算結(jié)果的類(lèi)型. 在本文自定義控件的圖表中都要重寫(xiě)上述4個(gè)方法.

2 通用控件設(shè)計(jì)實(shí)現(xiàn)及展示

在目前比較流行的掌上數(shù)字校園應(yīng)用中, 針對(duì)一卡通消費(fèi)問(wèn)題, 學(xué)生們除了希望可以查詢(xún)每次消費(fèi)的相關(guān)明細(xì)外, 還經(jīng)常關(guān)心自己一個(gè)月之內(nèi)總的消費(fèi)金額、分類(lèi)消費(fèi)金額和每日消費(fèi)金額等. 下面具體介紹該控件的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程.

2.1 界面布局

ViewGroup類(lèi)是View類(lèi)的子類(lèi), 是所有組件的容器, 界面的布局管理器作為ViewGroup的子類(lèi), 負(fù)責(zé)控制Android中各個(gè)組件的大小、間距和對(duì)齊方式等[10]. 本文的自定義控件用來(lái)統(tǒng)計(jì)近一個(gè)月內(nèi)的消費(fèi)情況, 主要實(shí)現(xiàn)三個(gè)功能: 圓形圖顯示總消費(fèi)金額, 柱狀圖顯示分類(lèi)消費(fèi)金額, 折線(xiàn)圖顯示每日消費(fèi)金額. 界面布局如圖2所示.

圖2 界面布局設(shè)計(jì)

該界面還設(shè)計(jì)了兩個(gè)HorizontalScrollView(橫向滾動(dòng)條), 用于顯示完整的柱狀圖和折線(xiàn)圖. 柱狀圖用來(lái)顯示一個(gè)月的分類(lèi)消費(fèi)金額, 折線(xiàn)圖則顯示每日消費(fèi)金額. 由于要顯示的內(nèi)容較多, 一般的手機(jī)屏幕顯示不全, 因此使用HorizontalScrollView實(shí)現(xiàn)水平方向的滑動(dòng)來(lái)查看完整信息.

2.2 圖表設(shè)計(jì)

本文自定義控件涉及圓形圖、柱狀圖和折線(xiàn)圖三個(gè)圖表, 且各自元素不同, 因此定義了三個(gè)繪制圖表的類(lèi).

① 圓形圖: 定義ICardConsumeArc類(lèi)來(lái)繪制. 與柱狀圖和折線(xiàn)圖的定義不同, 圓形圖的設(shè)計(jì)思路為: 跳轉(zhuǎn)到該界面時(shí), 圓形圖內(nèi)部為動(dòng)態(tài)增長(zhǎng)的近一個(gè)月的消費(fèi)金額總數(shù), 外部是動(dòng)態(tài)增長(zhǎng)的圓形弧線(xiàn). 數(shù)字與圓弧的動(dòng)態(tài)增長(zhǎng)是同步的, 當(dāng)圓形弧線(xiàn)封閉時(shí), 數(shù)字增長(zhǎng)結(jié)束, 最終顯示的數(shù)字即為近一個(gè)月一卡通的消費(fèi)金額總數(shù). 此功能涉及多線(xiàn)程問(wèn)題, 因此定義了一個(gè)實(shí)現(xiàn)Runnable接口的thread類(lèi). 線(xiàn)程對(duì)象創(chuàng)建后, 需要通過(guò)調(diào)用線(xiàn)程的start()方法來(lái)啟動(dòng)線(xiàn)程[11]. 在線(xiàn)程類(lèi)中最關(guān)鍵的是重寫(xiě)run()方法, 它包含了線(xiàn)程進(jìn)入后臺(tái)任務(wù)執(zhí)行狀態(tài)時(shí)要執(zhí)行的代碼, 該控件的run()方法直接調(diào)用postInvalidate()刷新界面, 實(shí)現(xiàn)數(shù)字和圓形弧線(xiàn)同步動(dòng)態(tài)增長(zhǎng). 該類(lèi)還調(diào)用了一個(gè)自定義的方法init(param), 負(fù)責(zé)畫(huà)布和畫(huà)筆的初始化操作.

② 柱狀圖: 定義ICardConsumeColume類(lèi)來(lái)繪制. 該部分通過(guò)調(diào)用后臺(tái)服務(wù)器的getFenleiConsume接口, 讀取webservice信息, 將一卡通消費(fèi)記錄按不同的類(lèi)別顯示到該界面. 后臺(tái)服務(wù)器中自定義的消費(fèi)類(lèi)別有水果店、超市、餐廳、開(kāi)水房、圖書(shū)館等. ICardConsumeColume類(lèi)中同樣包含設(shè)置畫(huà)筆屬性和動(dòng)態(tài)布局的init(param)方法. 在onDraw(Canvas)方法中, 本文調(diào)用了兩個(gè)自定義方法drawRectf(Canvas)和drawName(Canvas), 前者用來(lái)繪制柱狀圖中的矩形柱, 后者顯示類(lèi)別名. 在控件的實(shí)際運(yùn)行過(guò)程中, 各類(lèi)別矩形柱的背景顏色會(huì)在一定范圍內(nèi)隨機(jī)變化, 這是因?yàn)樵擃?lèi)定義了一個(gè)存儲(chǔ)背景顏色的數(shù)組, 其中包含7種用int類(lèi)型標(biāo)記的顏色, 在drawRectf(Canvas)方法中通過(guò)產(chǎn)生1-7之間的隨機(jī)數(shù)來(lái)顯示對(duì)應(yīng)顏色.

③ 折線(xiàn)圖: 定義ICardConsumeLine類(lèi)來(lái)繪制. 同理, 該部分調(diào)用服務(wù)器的getMonthConsume接口, 讀取并顯示近一個(gè)月的每日消費(fèi)金額. 根據(jù)測(cè)試手機(jī)屏幕尺寸, 在init(param)方法中預(yù)先定義手機(jī)屏幕可顯示8天的記錄, 通過(guò)水平滑動(dòng)顯示剩余記錄. 該類(lèi)中onDraw(Canvas)調(diào)用了drawStraightLine(Canvas)和drawBrokenLine(Canvas)兩個(gè)方法, 分別用來(lái)繪制豎線(xiàn)和折線(xiàn). 在繪制折線(xiàn)時(shí), 還定義了Path類(lèi)的對(duì)象, 用于連點(diǎn)成線(xiàn).

2.3 主Activity的設(shè)計(jì)

在一卡通功能的Activity點(diǎn)擊相關(guān)圖標(biāo)會(huì)跳轉(zhuǎn)到該自定義控件的主Activity, 將其命名為ICardGraphMainActivity. 在該java文件中, 本文為柱狀圖和折線(xiàn)圖的異步任務(wù)處理各自定義了AsyncTask的子類(lèi): ColumTask和LineTask, 由于圓形圖中顯示的總消費(fèi)金額可從柱狀圖訪(fǎng)問(wèn)的服務(wù)器接口獲得, 因此不再另外定義類(lèi)來(lái)處理. 在這兩個(gè)子類(lèi)中, 重寫(xiě)了上文中提到的異步任務(wù)機(jī)制的4個(gè)方法. 由于項(xiàng)目前期已將后臺(tái)服務(wù)器搭建完畢, 本控件中需要的近一個(gè)月的分類(lèi)消費(fèi)記錄和每日消費(fèi)記錄可直接調(diào)用服務(wù)器的getFenleiConsume和getMonthConsume接口, 讀取WebService信息[11-13]. 以柱狀圖為例, 在ICardGraphMainActivity類(lèi)的onCreate方法中調(diào)用execute()以后, 便執(zhí)行onPreExecute()方法; 緊接著doInBackground(Params)執(zhí)行, 該方法負(fù)責(zé)訪(fǎng)問(wèn)服務(wù)器的getFenleiConsume接口讀取分類(lèi)消費(fèi)信息, 并調(diào)用publishProgress()更新程序界面; 隨后onProgressUpdate(Params)執(zhí)行, 將進(jìn)度信息更新到UI界面上; 最后調(diào)用onPostExecute(Result), 給計(jì)算結(jié)果賦值并顯示到用戶(hù)界面[14,15].

2.4 應(yīng)用實(shí)例及效果展示

本文自定義的通用控件目前已應(yīng)用于開(kāi)發(fā)完成的數(shù)字校園手機(jī)端系統(tǒng), 近一個(gè)月消費(fèi)統(tǒng)計(jì)的最終展示效果如圖3.

(a) 隨機(jī)狀態(tài)1 ?? (b) 隨機(jī)狀態(tài)2 ?? (c) 隨機(jī)狀態(tài)3

圖3中最上方圓形圖的中心數(shù)字表示總消費(fèi)金額, 外圍的白色圓環(huán)與中心數(shù)字同步動(dòng)態(tài)增長(zhǎng), 數(shù)字增長(zhǎng)結(jié)束時(shí)圓環(huán)閉合, (a)(b)(c)為隨機(jī)截取的三個(gè)狀態(tài).

本文的自定義圖表控件給類(lèi)似的統(tǒng)計(jì)問(wèn)題提供了一個(gè)模板, 只要輸入的原始數(shù)據(jù)符合一定格式, 均可以使用該控件實(shí)現(xiàn)用戶(hù)的展示需求. 其中實(shí)現(xiàn)分類(lèi)功能的柱狀圖的輸入數(shù)據(jù)需滿(mǎn)足格式:

實(shí)現(xiàn)每日消費(fèi)的折線(xiàn)圖的輸入數(shù)據(jù)格式為:

除了校園一卡通的消費(fèi)統(tǒng)計(jì)以外, 本文還通過(guò)自定義模擬數(shù)據(jù), 實(shí)現(xiàn)了家電銷(xiāo)售統(tǒng)計(jì)和個(gè)人財(cái)務(wù)管理兩個(gè)類(lèi)似的典型案例, 圖4展示了近一個(gè)月家電銷(xiāo)售情況, 圖5為近一個(gè)月個(gè)人生活支出情況.

3 通用控件效果評(píng)價(jià)

如上文的控件展示圖所示, 圓形圖的動(dòng)態(tài)變化是本文自定義控件的一個(gè)亮點(diǎn), 隨著中心數(shù)字和外圍曲線(xiàn)的同步增長(zhǎng), 師生對(duì)本月的總消費(fèi)金額會(huì)有一個(gè)心理上的變化, 相比現(xiàn)有的大部分圖表控件的直接靜態(tài)顯示, 具有更優(yōu)的用戶(hù)體驗(yàn). 若該控件應(yīng)用在其他系統(tǒng), ICardConsumeColume類(lèi)中數(shù)組內(nèi)的顏色范圍也可隨意設(shè)定, 本文設(shè)置了7種矩形柱顏色, 使得每次跳轉(zhuǎn)到該Activity時(shí), 分類(lèi)矩形柱的填充顏色都是不同的, 可視化效果比固定顏色設(shè)置的方式更加靈活.

盡管目前也有一些基于Android界面設(shè)計(jì)的自定義可視化控件開(kāi)源案例, 相比部分相似案例[16,17], 本文提出的自定義控件從使用條件和可視化方式等方面都具有一定的創(chuàng)新性和新穎性, 對(duì)比如表1所示.

表1 本文控件與現(xiàn)有相似成果的對(duì)比評(píng)估

上表中的通用性指控件的適用條件, 本文的自定義控件包含圓形圖、柱狀圖和折線(xiàn)圖三種圖表, 若根據(jù)用戶(hù)需求想顯示任意其他種類(lèi)的圖表, 只需添加或刪改繪制相應(yīng)的圖表類(lèi), 并在ICardGraphMainActivity中重新調(diào)用即可. 而現(xiàn)有的類(lèi)似成果中, 自定義控件一般對(duì)所屬系統(tǒng)的依賴(lài)性較強(qiáng), 系統(tǒng)功能改變, 圖表控件需要作出較大的改動(dòng), 相比之下, 本文提出的自定義控件具有較強(qiáng)的通用性.

美觀性方面, 本文控件的背景顏色和填充顏色等均由參數(shù)控制, 可根據(jù)用戶(hù)需求修改設(shè)置成不同的皮膚使用, 三個(gè)圖表在同一個(gè)界面可全部顯示. 而在對(duì)比的控件中, 圖表不能完全占據(jù)手機(jī)屏幕, 且用色簡(jiǎn)單, 本文控件布局相對(duì)更加合理, 具有較好的美觀性.

用戶(hù)體驗(yàn)方面, 跳轉(zhuǎn)到該控件所在界面時(shí), 用戶(hù)無(wú)需任何操作, 圓形圖自動(dòng)動(dòng)態(tài)增長(zhǎng), 柱狀圖顏色隨機(jī)顯示. 相對(duì)于部分已有控件來(lái)說(shuō), 該控件更容易掌握且靈活性強(qiáng), 用戶(hù)體驗(yàn)更佳.

4 結(jié)語(yǔ)

本文提出的基于Android的自定義通用可視化控件能解決各種類(lèi)似的數(shù)據(jù)統(tǒng)計(jì)問(wèn)題, 該控件在滿(mǎn)足一定格式要求的條件下, 只需要替換輸入數(shù)據(jù), 即可實(shí)現(xiàn)圓形圖、柱狀圖、折線(xiàn)圖三類(lèi)圖表的可視化展示; 控件通用性較強(qiáng), 若需要展示其他任意類(lèi)型圖表, 只需額外增加繪制該圖表的類(lèi)或修改當(dāng)前類(lèi), 并略加修改布局和主Activity即可; 該控件能夠?qū)崿F(xiàn)圓形圖中心數(shù)字和外圍曲線(xiàn)的同步動(dòng)態(tài)增長(zhǎng)以及柱狀圖填充顏色的隨機(jī)顯示, 相比現(xiàn)有的部分圖表控件具有更好的用戶(hù)體驗(yàn)效果, 但仍可進(jìn)一步改進(jìn).

1 李維勇.Android UI設(shè)計(jì).北京:機(jī)械工業(yè)出版社,2015.

2 曾健平,邵艷潔.Android系統(tǒng)架構(gòu)及應(yīng)用程序開(kāi)發(fā)研究.微計(jì)算機(jī)信息,2011,27(9).

3 季玉茹,王德忠.基于安卓的音樂(lè)播放器設(shè)計(jì).電腦知識(shí)與技術(shù),2013,9(25):5641–5658.

4 徐虎,彭正濤,趙俊逸.基于WiFi的Android移動(dòng)設(shè)備語(yǔ)音通信系統(tǒng)的設(shè)計(jì)開(kāi)發(fā).計(jì)算機(jī)應(yīng)用與軟件,2012,29(11): 225–238.

5 黃藝鋒,閆巧.基于Android平臺(tái)電子詞典的設(shè)計(jì)與實(shí)現(xiàn). 計(jì)算機(jī)應(yīng)用,2011,31(2):228–232.

6 羅雷,韓建文,汪杰.Android系統(tǒng)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)詳解.北京: 人民郵電出版社,2014.

7 李剛.瘋狂Android講義.北京:電子工業(yè)出版社,2011.

8 楊杰.基于Android的多線(xiàn)程處理技術(shù).電腦知識(shí)與技術(shù),2013,9(18):4251–4254.

9 李光明,孫英爽,黨小娟.基于安卓的遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)工程與設(shè)計(jì),2016,37(2):556–561.

10 Ostrander J,劉文斌,譯.Android UI基礎(chǔ)教程:Develop& Design.北京:人民郵電出版社,2012.

11 巫志勇.Android開(kāi)發(fā)中Web Service網(wǎng)絡(luò)編程研究.電腦知識(shí)與技術(shù),2012,8(20):4904–4906.

12 羅國(guó)濤,裴廣.基于WebService和Android的C/S+B/S結(jié)構(gòu)手機(jī)電影系統(tǒng).計(jì)算機(jī)應(yīng)用與軟件,2015,32(9):328–333.

13 倪凱,夏海波,魏建明,程嘉昇,李焱.一種移動(dòng)終端遠(yuǎn)程數(shù)據(jù)訪(fǎng)問(wèn)控制方法.計(jì)算機(jī)應(yīng)用與軟件,2012,29(6):230–232.

14 彭海文.Android Web Services應(yīng)用研究.電腦知識(shí)與技術(shù), 2011,7(12):2851–2852.

15 陳望挺,林滿(mǎn)足,陳健,章躍,傅奇佳,竺樂(lè)慶.基于JSP和Android的C/S結(jié)構(gòu)問(wèn)卷系統(tǒng).計(jì)算機(jī)應(yīng)用,2013,33(3): 886–889.

16 李雙麟.基于Android的智能供水控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[碩士學(xué)位論文].長(zhǎng)春:吉林大學(xué),2015.

17 秦建波,王巍,李冬晨.基于Android 的股市App的技術(shù)研究與實(shí)現(xiàn).電腦知識(shí)與技術(shù),2014,10(32):7653–7656.

Custom General Visual Component Based on Android

ZHENG Qiu-Mei, LIU Zhen, SU Zheng, LI Song

(College of Computer and Communication Engineering, China University of Petroleum, Qingdao 266580, China)

Since Android system components cannot fully meet the needs of developers, this paper proposes a custom general visual component, introduces the UI design principles based on Android and the realization methods of tables, and mainly discusses the asynchronous task mechanism used in the custom component. This component includes a circular diagram, a histogram and a line chart, and the circular diagram can display dynamically. Experimental results show that the component is simple and easy to use, and also has a strong commonality.

Android; custom; component; asynchronous; commonality

國(guó)家自然科學(xué)基金(51274232,61305008);中央高?;究蒲袠I(yè)務(wù)費(fèi)專(zhuān)項(xiàng)(14CX06008A);山東省自然科學(xué)基金(ZR2011FQ018)

2016-04-14;收到修改稿時(shí)間:2016-06-12

[10.15888/j.cnki.csa.005584]

猜你喜歡
折線(xiàn)圖柱狀圖控件
使用“填表單”微信小程序 統(tǒng)計(jì)信息很方便
基于.net的用戶(hù)定義驗(yàn)證控件的應(yīng)用分析
數(shù)據(jù)增加折線(xiàn)圖自動(dòng)延長(zhǎng)
關(guān)于.net控件數(shù)組的探討
讓折線(xiàn)圖顯示在一個(gè)單元格中
再多也不亂 制作按需顯示的折線(xiàn)圖
高中地理圖像圖表題解析技巧之管窺
美化Excel折線(xiàn)圖表
由科研論文中一個(gè)柱狀圖引發(fā)的編輯思考
應(yīng)用EXCEL和MAPGIS快速生成地浸砂巖型鈾礦鉆孔綜合柱狀圖
门头沟区| 保亭| 蓬安县| 南康市| 本溪市| 永平县| 平和县| 平舆县| 留坝县| 苏尼特右旗| 乃东县| 芷江| 女性| 兰州市| 邢台县| 南宫市| 石河子市| 庐江县| 大石桥市| 上虞市| 柞水县| 宣恩县| 逊克县| 比如县| 池州市| 广汉市| 固镇县| 合江县| 嘉峪关市| 龙州县| 平罗县| 开原市| 花垣县| 贡觉县| 司法| 宝山区| 晋江市| 大悟县| 南川市| 资兴市| 金寨县|