俗話說 :好記性不如爛筆頭 魯迅說:爛筆頭不如在簡(jiǎn)書記一下(魯迅:“我從沒說過那句話!”) 所以? 我就在簡(jiǎn)書記一下 主題如標(biāo)題 內(nèi)容?? 在下面。
What?
看名字就知道了( 自定義 的 View)
Why?
為什么要自定義View?
主要是Android系統(tǒng)內(nèi)置的View無法實(shí)現(xiàn)我們的需求,我們需要針對(duì)我們的業(yè)務(wù)需求定制我們想要的View。(理想很豐滿,現(xiàn)實(shí)很骨感?。?/p>
How?
怎樣實(shí)現(xiàn)自定義View
首先 安卓自定義View 有三種實(shí)現(xiàn)方式:1,擴(kuò)展;2,組合;3,重寫。打個(gè)比方解釋:1.蒸汽機(jī)(TextView)已經(jīng)有了但還不足以滿足人類需要,所以瓦特改良了蒸汽機(jī)(xxx extends TextView{ 我是改良。。})。2.手機(jī)充電器 -- A有usb線? B有充電頭 把他們組合起來(xxx extends ViewGroup) 就可以充電了。3.我們都有一個(gè)家名字叫中國(View),我們每個(gè)人的家又各不相同(xxx extends View)。
王陽明說“知行合一”,所以我決定 一個(gè)一個(gè)的實(shí)踐一遍。(一種方式舉一個(gè)栗子!)
1.擴(kuò)展方式
目標(biāo):簡(jiǎn)單點(diǎn)---“給文字加個(gè)邊框和背景”
異議:這個(gè)原生就可以很容易實(shí)現(xiàn)了啊,干什么還要寫什么自定義view,浪費(fèi)表情
反駁:你說的對(duì) 可我就要這樣!

代碼分析:繼承了TextView 重寫onDraw()方法 黃色畫筆畫矩形布滿控件 綠色畫筆畫的是四周內(nèi)移10的矩形 推測(cè)看到的是黃邊綠底的

2.組合方式
目標(biāo):就類似那種title帶回退鍵,標(biāo)題的那種 可以通用
簡(jiǎn)圖:

功能分析:1.要能設(shè)置標(biāo)題; 2.回退鍵有外部點(diǎn)擊事件;3 消息圖標(biāo)由外部點(diǎn)擊事件;消息圖標(biāo)可隱藏

代碼里有注釋就不解釋了 可以看到構(gòu)造函數(shù)里有一段代碼 引用資源文件(LayoutInflater.from(context).inflate(R.layout.top_layout,this);):

這是部分xml代碼? 全部代碼 也就外面套著一個(gè)RelativeLayout 標(biāo)簽。恩!在這里順帶熟悉一下在AndroidStudio里自動(dòng)生成矢量圖的方法:就如上面代碼中引用的圖片資源都是系統(tǒng)生成的。
2.x AndroidStudio里自動(dòng)生成矢量圖

然后就出現(xiàn)下面界面:

好吧 然后點(diǎn)擊安卓圖標(biāo)那個(gè)鍵就可以選圖標(biāo)啦

然后選中一個(gè)點(diǎn)擊Ok 后面就一氣呵成 在這就不做贅述啦
3.重寫方式
目標(biāo):要畫一個(gè)可以動(dòng)的波浪線 最好有個(gè)圓圈在頭部 也能一起動(dòng)
異議:為什么做這種沒用的東西
反駁:好玩啊
額。。。。
想象中的圖:

?看看代碼吧

效果圖:

恩 然后 意味深長 的對(duì)自己和大家 道聲:“周末愉快!??!”