寫(xiě)個(gè)博客也不知道怎么開(kāi)頭,寫(xiě)了四五篇了感覺(jué)寫(xiě)了好多,看了下字?jǐn)?shù)統(tǒng)計(jì)我去,才1000多字我怎么感覺(jué)寫(xiě)了上萬(wàn)字呢,好吧,還有幾千在腦子里沒(méi)寫(xiě)出來(lái)。開(kāi)始下文。
1. 需求
之前公司有個(gè)需求需要實(shí)現(xiàn)一個(gè)橢圓形大布局,實(shí)現(xiàn)旋轉(zhuǎn)和停止時(shí)固定角度,布局的每個(gè)Item需要有個(gè)大小差,帶點(diǎn)點(diǎn)視覺(jué)效果,如圖。
這個(gè)比較適用于車(chē)間,TV,橫屏布局的機(jī)器上,其他布局的調(diào)下參數(shù)也是一樣的。

2.怎么搞?
百度一下,看看有沒(méi)有現(xiàn)成的,每次看到自定義View都怕,這方面確實(shí)有的不多,普通的網(wǎng)上應(yīng)該也有,而且該經(jīng)過(guò)驗(yàn)證的。但找了一下真沒(méi)有找到這種橢圓的,沒(méi)辦法,沒(méi)思路,還好經(jīng)過(guò)艱難的,不屑的..... 百度到了兩個(gè)相關(guān)的ArcPageIndicator 和 Android-CircleMenu 經(jīng)過(guò)看看,看看,看看,有點(diǎn)識(shí)路了本控件主要是對(duì)Android-CircleMenu進(jìn)行修改得出。
3.實(shí)現(xiàn)
- 我個(gè)人不太想在博客里貼源碼什么的,想看的可以看源碼,一般都是介紹怎么用,因?yàn)轭?lèi)也不多比較簡(jiǎn)單。
- 需要修改樣式可以直接修改下面四個(gè)參數(shù)。
//盡量保證最大值為1,在布局里將圖片文字設(shè)置大點(diǎn),放大會(huì)失真
private float mMaxSize = 1.0f;
private float mMinSize = 0.6f;
//拉伸成橢圓
private float mStretchX = 1.6f;
private float mStretchY = 0.6f;
- attrs 介紹
//下面兩個(gè)可以實(shí)現(xiàn)Item視覺(jué)差,就是最近的圖片大點(diǎn),最小的圖片小的
<attr name="children_max_scale" format="float"/>
<attr name="children_min_scale" format="float"/>
- eturntable_menu_item.xml
修改這個(gè)可以修改,可以對(duì)每個(gè)樣式進(jìn)行修改,例如圖片和文字的位置但不能改id名。
4.功能
- 1.可以定義控件的個(gè)數(shù)。
- 2.可以監(jiān)聽(tīng)每個(gè)Item的單機(jī)事件。
- 3.可以實(shí)現(xiàn)各種形狀的盤(pán)子,如圓盤(pán),橢圓盤(pán)。
- 4.可以實(shí)現(xiàn)代碼切換上一個(gè),下一個(gè)的旋轉(zhuǎn)。
- 5.實(shí)現(xiàn)滑動(dòng)時(shí)松開(kāi)選擇到固定角度。
- 6.字?jǐn)?shù)差不多了,不扯了,自己看,-.-。
5.使用
//Maven
<dependency>
<groupId>com.wangxuan.library</groupId>
<artifactId>eturntablemenuview</artifactId>
<version>1.0</version>
<type>pom</type>
</dependency>
//Gradle
compile 'com.wangxuan.library:eturntablemenuview:1.0'
6.效果圖
第一張圖是實(shí)現(xiàn)了,但樣式圖片公司的不能公開(kāi),所以下了八個(gè)動(dòng)物代替,不怎么好看,看功能就行。
七個(gè)Item時(shí)

六個(gè)Item時(shí)

八個(gè)Item時(shí)

Gif效果

這個(gè)是之前寫(xiě)的,所以demo就不寫(xiě)那么多,覺(jué)得用的到可以自己再看。