學(xué)習(xí)安卓幾個月了,也有點(diǎn)自己的體會,然而我發(fā)現(xiàn)自己真正喜歡的是數(shù)據(jù)方面的東西,當(dāng)然android自定義view也很好玩,很體驗一些技巧性的東西。也不想自己以前學(xué)習(xí)過程總結(jié)的東西就此淹沒,于是我就決定把自己的一些在android研究過的東西全部都分享出來啦。這個是自定義View系列,如果覺得我寫的還行的話,可以在一起討論,我還是可以幫忙寫下一些特別的點(diǎn)的自定義view的。
文章結(jié)構(gòu):1.羅列分享我學(xué)習(xí)過程中寫的自定義view;2.針對個別特殊的自定義view討論下重要的思路部分;3.給出一些自定義view學(xué)習(xí)資源匯總;4.我學(xué)習(xí)自定義view的庫,喜歡的支持的可以給下star或fork啦。
一、羅列分享我學(xué)習(xí)過程中寫的自定義view
如下圖:根據(jù)圖中的去按照我的文章分點(diǎn),以及最后給的源碼結(jié)合來看吧,里面有我學(xué)習(xí)過程中的很多解釋,雖然有的有點(diǎn)啰嗦,但很完整體現(xiàn)了我的思路了。
這里寫圖片描述
這里寫圖片描述
二、針對個別特殊的自定義view討論下重要的思路部分
(1)上面兩個仿美團(tuán)上方欄的效果:
第一個方案的 是xml中用radiobutton強(qiáng)制寫死了大概多少個滑動頁面的引導(dǎo)小圓點(diǎn),這種方案可見復(fù)用性不高。實現(xiàn)步驟是:1.編寫頁面,使用一viewpager和一radiogroup組合做出效果;2.重要的是自定義viewpager的適配器;3.在controller的activity中實現(xiàn)耦合,往viewpager加入gridview,將gridview傳給viewpager的適配器,用radiogroup的基本邏輯實現(xiàn)引導(dǎo)的小圓點(diǎn)UI。
第二種方案是我反編譯了一下美團(tuán),看了下他們的大致布局,以及耦合的代碼,實現(xiàn)的仿造。大致過程還是跟第一個方案相同,不過在小圓點(diǎn)的實現(xiàn),參考它們的多重復(fù)用性方案。就是用一個小圓點(diǎn)數(shù)組,在controller那里實現(xiàn)綁定每個gridview。
(2)自定義Textview的字體,我以前寫過了。Android-自定義TextView(彩色字體與霓虹燈字體以及TextView的多項字體效果)
(3)手動控制圓和圓形進(jìn)度條也寫過啦。 Android-自定義view之圓(選擇程度圓以及進(jìn)度圓)
(4)圓形頭像也是寫過了。 Android-解析自定義view之圓形頭像的各類方案
(5)衛(wèi)星導(dǎo)航欄。是以前項目移植過來的一個東西。很有趣的一個東西。重點(diǎn)是:重寫relativelayout和用viewgroup實現(xiàn)自己的衛(wèi)星布局。過段時間會針對這個寫下文章。
(6)流式布局。鴻洋大大講得很好
(7)水波紋。嘻嘻,這個要求是往下兼容,我用自己思路實現(xiàn)了一個,雖然很多人做項目都是照搬v7包,然后直接往下兼容,可是這種自定義view的會給我們加深認(rèn)識安卓的底層繪圖機(jī)制,繼承機(jī)制的理解呀。
核心是:使用監(jiān)聽事件,利用不斷重繪,并且要不斷地清理畫布的數(shù)據(jù),不然會oom的。那個波紋的效果其實就是不斷地畫圓形,還要計算點(diǎn)擊的點(diǎn),計算半徑,然后傳遞事件給dispatchDraw,不斷重繪。
(8)圖片輪播,這個很多人在開發(fā)的時候也是照搬第三方的庫的,然而并不好,就不多說了。我們來討論下它的核心思路:(具體看源碼有詳細(xì)的思路解釋)
1.自定義viewpager和自定義viewpager的適配器,其中輪播器實現(xiàn)的:輪播器最重要的幾個特點(diǎn)就是:自動滾動、手動滑動、滾動方向、每個Item顯示時間。2.在viewpager中實現(xiàn)的定時輪播,寫個定時器去執(zhí)行他;3.一個線程安全的播放方法,根據(jù)我們設(shè)置的向標(biāo)記量去輪播(向左向右向上向下)。
(9)recyclerview,鴻洋大大的完美解釋。鴻洋大大的recyclerview
有能力的朋友,最好也把鴻洋大大的recyclerview封裝也看了,我在項目中用了,閱讀大大的思路真的真的很棒??!鴻洋大大的recyclerview封裝
(10)接下來就是圓形菜單的,我基于鴻洋大大的一些思路根據(jù)實際需求做了一個限制級的圓形菜單。以前也解析過啦。 Android-自定義view之圓形與“半圓形”菜單
三、給出一些自定義view學(xué)習(xí)資源匯總:
初步接觸自定義看的東西:首先要清楚為什么要自定義view,什么是自定義view啦。給出博客你看:
總的我們要三步驟:一、自定義控件;二、自定義布局;三、深研自定義機(jī)制。
1.基礎(chǔ)一。
2.然后基礎(chǔ)二。
3.了解大概后,接著你就要系統(tǒng)一下看看自定義有多少東西。啟航的系列很詳細(xì)
4.開始實現(xiàn)自己的自定義控件啦:三種自定義方式:擴(kuò)展,組合,重寫
5.自定義布局從LinearLayout談起
6.在這過程中見識各個android大佬的自定義:搜下博客之星,前幾的基本都是android的啦。
7.深入自定義機(jī)制:(從個別方法到事件傳遞機(jī)制)
(1)getWidth和getMeasuredwidth方法:http://blog.csdn.net/u011494050/article/details/39134161
http://blog.sina.com.cn/s/blog_6e519585010152s5.html