Android 仿王者荣耀广告弹窗,android仿王者荣耀对战资料之能力图
TX的王者榮耀最近是火的不得了啊,小編也是最近入坑。玩了幾天之后,發(fā)現(xiàn)對戰(zhàn)資料之能力圖,蠻有意思(其實我想說,我們的產(chǎn)品妹子是個農(nóng)藥迷,非要把農(nóng)藥的能力圖搬到我們的app中),于是就有了下面的自定義view了。。。
首先看農(nóng)藥的截圖
看到這樣的需求之后,果斷的各種github或baidu,有料,雖沒有可以直接搬來的用的view(但是皇天不負有(偷)心(懶)人),把他的view拿過來改ba改ba就有了現(xiàn)在這個輪子了。。。好了,東拉西扯了這么多,廢話終止吧,還是直奔主題了。
ps:鴻洋的公眾號中有這么個帖子,鏈接地址:Android自定義控件 芝麻信用分雷達圖
一、首先,講一下實現(xiàn)思路:
1.首先確定view的中點坐標;
2.繪制多邊形;
3.繪制中點到多邊形各頂點連線;
4.繪制目標圓點;
5.繪制目標點之間的連線,連接完成后,再繪制覆蓋區(qū)域;
6.繪制中心文字;
7.繪制多邊形各頂點的文字。
二、接著,按上面的實現(xiàn)思路按部就班實現(xiàn):
1.獲取中點坐標,在onSizeChanged(int w, int h, int oldw, int oldh)方法中獲取,就省了測量的步驟。根據(jù)view的width、height,計算出中點坐標(說明:radius= Math.min(w,h) /2*3/5,‘*3/5’是設(shè)置半徑為view占得區(qū)域比例)
2.繪制多邊形,這里舉例繪制六變形,請先看實現(xiàn)截圖
下面看具體實現(xiàn),這里要說明兩個問題:
1)繪制多邊形,因為是繪制5個六邊形,而且是按比例0.2,所以就有了后面的percent這個參數(shù);
2)getPoint(int position,float percent)這個方法非常重要(后面貼圖),可以這么講,整個自定義view,全依賴它了。后面細述,這里就不贅述了。
3.繪制中點到多邊形各頂點連線。這里還是以剛才的六邊形舉例,請看截圖和具體是實現(xiàn):
4.繪制目標圓點,因為圓點繪制比較小的緣故,這里就不貼圖了,請大家自行腦補或看后面的實現(xiàn)截圖,可以看到一個小圓點。下面請看具體實現(xiàn):
5.繪制目標點之間的連線,連接完成后,再繪制覆蓋區(qū)域。請先看實現(xiàn)截圖,然后請看下面的實現(xiàn)細節(jié):
6.繪制中心文字,還是請先看實現(xiàn)效果,然后后面接著具體實現(xiàn),這里說明一下,drawtext方法,該方法的目的是為了讓文字居中(原理:先建一個矩形,把目標文字放進去,即可得到目標文字的寬高)。然后根據(jù)文字的左下角坐標開始繪制文字,即可讓文字居中。
7.繪制多邊形各頂點的文字。老規(guī)矩,還是先看實現(xiàn)截圖,然后看實現(xiàn)細節(jié):(請原諒,這里的實現(xiàn)效果截圖是在as的效果預(yù)覽中截的,所以細心的童鞋可能已經(jīng)發(fā)現(xiàn)了,其實在手機上運行截圖如上圖,文字居中顯示。)
補充:1.記得在上面講過,一個最重的getPoint方法還沒細述,這里要詳細講一下。請先看具體實現(xiàn)截圖,然后講為什么這樣?!原理:每個點都是相對于中點(centerX,centerY)的,所以我們先獲取每個點的絕對坐標(x0,y0),然后再計算出這些點相對于中點的坐標,即可得到已知坐標的點。
ps:這里對奇數(shù)邊的多邊形和偶數(shù)邊的多邊形進行了區(qū)分,至于為什么區(qū)分,請自行腦補。原理:目標點繞某個點旋轉(zhuǎn)某角度之后該點的新坐標與原坐標之間存在著某種關(guān)系,詳細關(guān)系請見截圖公式。
2.忘記講values/attrs文件了,這個還是有必要聊一下的,因為它涉及view應(yīng)用時的自定義屬性,可以直接在view中定義。下面請看attrs.xml
三、使用
用法1.view中使用
用法2.activity或fragment
四、源碼地址:https://gitee.com/tangbuzhi/customview
總結(jié)
以上是生活随笔為你收集整理的Android 仿王者荣耀广告弹窗,android仿王者荣耀对战资料之能力图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 春天逛公园,拍出少女感
- 下一篇: 大话西游抓变色宝宝技巧(《大话西游》手)