許艦
摘要:在日常生活中,智能手機(jī)用戶通常會(huì)對手機(jī)中的圖片進(jìn)行一些二次編輯操作,例如在圖片中通過劃線、劃圈標(biāo)注重點(diǎn)等,進(jìn)而通過社交網(wǎng)絡(luò)分享編輯之后的圖片。隨著智能手機(jī)的普及以及社交網(wǎng)絡(luò)的蓬勃發(fā)展,手機(jī)上的圖片二次編輯有著很強(qiáng)的實(shí)用價(jià)值。因此通過設(shè)計(jì)并實(shí)現(xiàn)Android平臺上的自定義繪圖組件,分析一些圖片二次編輯操作的實(shí)現(xiàn)原理,可以為讀者提供實(shí)現(xiàn)這類軟件的思路。
關(guān)鍵詞:圖片;繪圖組件;自定義組件;Android;二次編輯
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)10-0095-04
Abstract:In daily life, smart phone users usually perform some secondary editing operations on the pictures in the mobile phone, for example, by marking and highlighting circles in pictures, and then sharing the edited pictures through a social network. With the popularization of smart phones and the vigorous development of social networks, the secondary editing of pictures on mobile phones has a strong practical value. Therefore, by designing and implementing a custom painting view on the Android platform and analyzing the implementation principle of some secondary editing operations of the picture, the reader can be provided with the idea of implementing such software.
Key words:image; painting view; custom view; android; secondary editing
1 背景
在日常生活中,智能手機(jī)用戶通常會(huì)對手機(jī)中的圖片進(jìn)行一些二次編輯操作,例如在圖片中通過劃線、劃圈標(biāo)注重點(diǎn)等,進(jìn)而通過社交網(wǎng)絡(luò)分享編輯之后的圖片。傳統(tǒng)的簡單圖片二次編輯包括劃線、劃圈、旋轉(zhuǎn)、撤銷、清屏這些操作。其中劃線、劃圈為標(biāo)記操作,即為使用帶有底色的畫筆在圖片中標(biāo)記出重點(diǎn)部分;旋轉(zhuǎn)即為以圖片的中心點(diǎn)為旋轉(zhuǎn)中心,對圖片進(jìn)行90度、180度、270度旋轉(zhuǎn),進(jìn)而輔助劃線、劃圈等標(biāo)記操作;撤銷即為撤銷上一步的標(biāo)記操作;清屏即為清除當(dāng)前所有的標(biāo)記操作。上訴這些圖片二次編輯功能想必讀者都有接觸并且親身操作過,那么這些手機(jī)上的圖片二次編輯操作是如何實(shí)現(xiàn)的呢?筆者通過自己在Android平臺上設(shè)計(jì)自定義繪圖組件[1-5]、實(shí)現(xiàn)了這些圖片二次編輯操作,從而為讀者提供設(shè)計(jì)實(shí)現(xiàn)這類軟件的思路以及方法。
2 Android控件重繪
在Android平臺上,實(shí)現(xiàn)一個(gè)自定義繪圖控件一般分為以下兩步:
1)定義一個(gè)繪圖控件類繼承View類;
2)在定義的繪圖控件類中重載onDraw,onTouchEvent等方法,在這些方法中實(shí)現(xiàn)對圖片進(jìn)行二次操作的邏輯。
該章將介紹與Android自定義繪圖控件實(shí)現(xiàn)相關(guān)的控件重繪方面的內(nèi)容,使讀者對Android的控件重繪有一個(gè)大概的了解。
2.1 Canvas繪圖
Canvas類對于Android控件重繪來說是至關(guān)重要的。Canvas有畫布的意思,正如它的名字一樣,Canvas類中定義了大量與繪圖相關(guān)的方法,是一個(gè)繪圖操作集合。例如調(diào)用Canvas類中的drawLine方法可以繪制直線;調(diào)用drawCircle方法則可以繪制一個(gè)圓。
因此通過控件onDraw方法傳遞進(jìn)來的Canvas參數(shù),我們就可以實(shí)現(xiàn)在自定義控件上繪制各種圖形以及圖案。另外Canvas還有一個(gè)坐標(biāo)系的概念,例如在onDraw函數(shù)中,Canvas參數(shù)的坐標(biāo)系與手機(jī)屏幕是對應(yīng)的,如圖1所示
3.3 繪圖流程設(shè)計(jì)
繪圖操作需要以Canvas坐標(biāo)轉(zhuǎn)化以及監(jiān)聽Android 的Touch事件為基礎(chǔ),因此控件的繪圖流程描述如下:
1)將圖片的Bitmap對象載入繪圖控件,做好Canvas坐標(biāo)系調(diào)整,使圖片完整、居中的顯示在控件上。
4 結(jié)束語
在智能手機(jī)如此普及、社交網(wǎng)絡(luò)如此發(fā)達(dá)的今天,手機(jī)上的圖片二次編輯有很強(qiáng)的實(shí)用價(jià)值以及很廣的應(yīng)用場景。該文通過設(shè)計(jì)實(shí)現(xiàn)Android平臺上的自定義繪圖控件,分析了與繪圖控件相關(guān)的圖片二次編輯操作的原理,為讀者提供了設(shè)計(jì)實(shí)現(xiàn)這類軟件的思路。
參考文獻(xiàn):
[1] 趙曉影. Android應(yīng)用開發(fā)中的UI設(shè)計(jì)[J]. 勞動(dòng)保障世界:理論版, 2013(12): 111.
[2] 王建功. 基于Android的自定義控件設(shè)計(jì)[J]. 德州學(xué)院學(xué)報(bào), 2015, 31(2): 62-65.
[3] 王會(huì)進(jìn), 方錦亮. 基于JAVA的自定義控件應(yīng)用技術(shù)研究[J]. 微型機(jī)與應(yīng)用, 2005(5): 13-16.
[4] 趙亮, 張維. 基于Android技術(shù)的界面設(shè)計(jì)與研究[J]. 電腦知識與技術(shù), 2009, 5(29): 8183-8185.
[5] 張香倩, 黃林生, 陳陽德. 基于Android的自定義媒體播放控件設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件導(dǎo)刊, 2016, 15(5): 79-81.
[6] 張晗, 褚治廣. 基于Android平臺的手勢識別技術(shù)設(shè)計(jì)與應(yīng)用[J]. 遼寧工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版, 2013, 33(4): 238-241.
[7] 馬建平, 潘俊卿, 陳渤. Android智能手機(jī)自適應(yīng)手勢識別方法[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2013, 34(7): 1703-1707.
[8] 張晗, 褚治廣. 基于Android平臺的手勢識別技術(shù)設(shè)計(jì)與應(yīng)用[J]. 遼寧工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版, 2013, 33(4): 238-241.