一个android 文本比对App的实现(一)
做c++開發(fā)很多年了,從早年windows vc6.0 做客戶端程序開發(fā),這些年后臺(tái)流媒體服務(wù)器后臺(tái)開發(fā)。隨著時(shí)代變遷,移動(dòng)互聯(lián)逐漸興起,直到現(xiàn)在,移動(dòng)互聯(lián)的風(fēng)頭早已蓋過(guò)傳統(tǒng)互聯(lián)網(wǎng)應(yīng)用,因而傳統(tǒng)后臺(tái)開發(fā)似乎日漸式微。如今要找工作的話,android,IOS等開發(fā)的職位不但數(shù)量遠(yuǎn)遠(yuǎn)多于c++,而且報(bào)酬也要比c++高很多,如果在移動(dòng)開發(fā)上做過(guò)三年以上,年薪25W以上的機(jī)會(huì)多的是,但是對(duì)于c++ 要達(dá)到這個(gè)數(shù),工作經(jīng)驗(yàn)一般多得六七年,同時(shí),技術(shù)要求比做移動(dòng)互聯(lián)網(wǎng)要高很多。因此,一直尋思著,要轉(zhuǎn)行到移動(dòng)開發(fā),但由于對(duì)c++感情較深,轉(zhuǎn)行的實(shí)施一直不溫不火,直到有一次看到滴滴招聘,招三年經(jīng)驗(yàn)的android開發(fā),年薪可開到50W, 這一刺激讓我徹底下定決心轉(zhuǎn)行,畢竟做人沒(méi)必要和錢過(guò)不去嘛。
為了搞清楚,好公司在招android開發(fā)時(shí),一般需要怎樣的條件,我在拉鉤上轉(zhuǎn)了一圈,將年薪20W以上的android開發(fā)要求總結(jié)了一下:
1. ?有android開發(fā)3年以上的經(jīng)驗(yàn)。
2. ?精通java ,c++, 有扎實(shí)的算法和數(shù)據(jù)結(jié)構(gòu)功底。
3. ?精通軟件架構(gòu),良好的代碼習(xí)慣。
4. ?精通android UI 開發(fā), 多線程,以及網(wǎng)絡(luò)協(xié)議原理。
經(jīng)過(guò)一段時(shí)間的研究和實(shí)踐,覺(jué)得自己似乎已掌握了android開發(fā)的技術(shù),但問(wèn)題在于,我多年來(lái)是做c++的,項(xiàng)目經(jīng)驗(yàn)也是c++為主,怎樣讓市場(chǎng)認(rèn)可我的android開發(fā)能力呢?想來(lái)想去,得到的辦法是我自個(gè)做一個(gè)滿足上述條件的app, 我想,沒(méi)有比拿出作品來(lái)證明自己能力的更好辦法了。該改程序代碼的下載地址為:
http://download.csdn.net/detail/tyler_download/9273255
這個(gè)App可以說(shuō)麻雀雖小,五臟具全,基本上能較好的顯示出以上幾點(diǎn)要求。其實(shí)它就是beyond comparer的安卓版,當(dāng)用戶選定兩篇文本后,app會(huì)將文本內(nèi)容的異同比較出來(lái)。
首先看看app的啟動(dòng)界面:
界面的結(jié)構(gòu)簡(jiǎn)單,上頭是兩個(gè)textview控件,下方是一個(gè)按鈕工具欄,在textview控件長(zhǎng)按住,會(huì)調(diào)用出文件選擇界面,讓用戶選擇要比對(duì)的文件,由于android本身沒(méi)有自帶的文件選擇框,所以這個(gè)界面也是自己開發(fā)的(借鑒了網(wǎng)上一位朋友的設(shè)計(jì),但在代碼設(shè)計(jì)上做了一些改進(jìn)):
當(dāng)用戶分別通過(guò)長(zhǎng)按上下textview, 調(diào)出文本選擇框,并選擇相應(yīng)文本后,文本的內(nèi)容會(huì)顯示在textview中,同時(shí),程序會(huì)調(diào)用文本比對(duì)算法找出兩個(gè)文本的最大共同子串,文本比對(duì)算法用的是Hirschberg博士改進(jìn)的lcs算法,算法將原lcs算法的存儲(chǔ)復(fù)雜度將O(n^2)改進(jìn)成O(n), 在后續(xù)文章,我們會(huì)研究該算法。當(dāng)比對(duì)后,文本中差異的部分會(huì)用紅色高亮,相同的部分以黑色字體顯示:
在底部工具欄按鈕,點(diǎn)擊向下,或向上箭頭會(huì)依次將文本相對(duì)應(yīng)的不同的地方,以背景高亮顯示:
程序功能雖然簡(jiǎn)單,但我感覺(jué)比較實(shí)用,同時(shí)該app基本上滿足了上述的幾點(diǎn)要求,既有界面的設(shè)計(jì),又有算法的設(shè)計(jì)實(shí)現(xiàn),同時(shí)在文本選擇框的設(shè)計(jì)中使用到了一些設(shè)計(jì)模式的技術(shù),這點(diǎn)能滿足“?精通軟件架構(gòu),良好的代碼習(xí)慣“這一要求吧,最重要的,當(dāng)人家問(wèn)我拿出作品時(shí)展示時(shí),我有東西拿的出來(lái)。后續(xù)我會(huì)把代碼上傳到csdn,希望籍此能和各位朋友探討移動(dòng)開發(fā)的技術(shù),如果能得到大牛們的指點(diǎn),那小的真是感激不盡了!
總結(jié)
以上是生活随笔為你收集整理的一个android 文本比对App的实现(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: swift5 Notification
- 下一篇: 【物联网学习笔记——人人学IoT系列】二