Android自定義View,Android炫酷的音樂頻譜進度條,變化自如的音樂進度條

(因為簡書的markdown編輯器無法設置圖片大小,而我的文章又是從我的博客上粘貼來的祝蝠,所以圖片大小無法控制羞福,如果影響的可以去我博客看)
前段時間,公司項目有個UI需求狂秦,要做一個這么的東西 :

20190708164625723.png

一個仿音樂頻率譜線進度條(這是什么鬼?)灌侣,那好,就先將這個控件命名為:音樂頻譜進度條:)
廢話不多說裂问,先來看一下效果圖:
2019071008533615.gif

附上在GitHub上的地址侧啼,點擊地址,就可以獲取源碼了堪簿。
如何依賴痊乾?
首先在項目的build.gradle中加入:

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

然后添加依賴:

dependencies {
     implementation'com.github.CaesarShao:MusicSpectrumBar:1.1.2'
    }

接著,在布局文件中戴甩,這么使用:

<com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
            android:layout_width="300dp"
            android:layout_height="100dp"
            />

直接跑應用符喝,就可以了闪彼,效果圖:


20190709094909748.png

音樂頻譜進度條顯示的模式:

1.居中模式(默認)

效果如上圖甜孤,這個是默認的顯示模式协饲,在布局文件中,加入屬性:

<com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
            android:layout_marginTop="50dp"
            android:layout_width="300dp"
            android:layout_height="100dp"
            app:poseType="1"
            />

2.底部對齊模式(poseType = 1)

           ..
            app:poseType="1"/>
20190709130211815.png

3.頂部對齊模式(poseType = 2)

<com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
           ..
            app:poseType="2"/>
20190709130238683.png

4.等長條顯示模式(poseType = 3)

<com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
           ..
            app:poseType="3"/>
20190709130254941.png

顏色渲染的模式:

1.顏色漸變模式(默認)

2.固定變色模式

使用方式:

<com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
      ..
        app:colorGradient="0" />
 
    <com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
      ..
        app:colorGradient="1" />

默認的colorGradient屬性為0缴川,當設置為1時茉稠,渲染模式就變成了固定變色模式。
解釋下這2種顏色渲染模式:


20190709141751914.png

這張圖是當進度條拉到100%時把夸,每個條目上要顯示的顏色值而线,(后面再講如何自定義替換顏色顯示和條目數(shù)),可以發(fā)現(xiàn)恋日,顏色的總體是從藍色漸變成粉色膀篮,下面是2種模式下,進度到30%左右和70%左右的圖:


20190709143914589.png
20190709143927551.png

上面的是默認顏色模式岂膳,下面的是誓竿,固定變色模式,可以發(fā)現(xiàn)谈截,在顏色模式一下筷屡,不管你進度調(diào)到多少,你選中的進度的顏色簸喂,會從所有顏色中毙死,按照當前百分比的形式,有整體漸變效果喻鳄。就是說扼倘,在顏色模式一下,你都能夠看到所有顏色的漸變渲染效果除呵。而在顏色二模式下唉锌,每個條目能改變的顏色已經(jīng)是決定好了的,例如最中間的條目竿奏,它只有2種顏色選擇袄简,選取時的“6d56e3”顏色值和未選取時的白色,無漸變效果泛啸。

好,接下來再來介紹其他的屬性绿语。

進度條未選中部分的顏色:

<com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
       ..
        app:unSelectColor="@color/colorAccent" />

進度條每個條目的圓角弧度:

 <com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
        ..
        app:roundAngle="5"/>

默認是5弧度,數(shù)值越大候址,越圓滑吕粹,對了,在api21以下的android版本,無法顯示圓弧岗仑,只能顯示矩形匹耕。


20190712084847643.png

條目之間的距離:

<com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
        ..
        app:gapMultiple="2"/>

就是每跟條目之間的距離,默認是每個條目的2倍荠雕,可以設置小數(shù)值稳其。

20190712092838705.png

可以看到驶赏,每個條目中間的空格的距離,是每個條目寬度的2倍既鞠,如果這個值越大煤傍,中間的距離就按照倍數(shù)增加。

顯示3模式的條目高度:

在app:poseType = 3的模式下嘱蛋,再設置app:SpectMultiple這個屬性蚯姆。

<com.caesar.musicspectrumbarlibrary.MusicSpectrumBar
      ..
        app:poseType="3"
        app:SpectMultiple="0.5" />

這個值是設置,在3模式下洒敏,每個條目的高度占總體控件高度的百分比高度龄恋,默認取0.5,也就是一半的高度凶伙,取值范圍是0~1篙挽。這個屬性,必須只有在poseType為3情況下镊靴,才有用铣卡。


20190712095010799.png

這張圖上面的控件是設置為0.7,下面的控件是設置為0.5偏竟。

接下來到了大家最關(guān)心的問題點煮落,如何改變選中的色彩和每個條目的高度和數(shù)目。這個目前只能在代碼中設置踊谋。

20190709141751914-3.png

這邊先看這張圖蝉仇,其實進度條在拖滿的時候,每個顏色的值都已經(jīng)是決定好的了殖蚕,比如第一個顏色是“0050dc”,第二個是“0650dc”轿衔,最后一個顏色是“ee5deb”,然后總共有29個條目。

接下來睦疫,我們再看目前有幾種高度的條目害驹,是有7種高度的條目,我將第一個條目的高度設置為1倍數(shù)蛤育,那第二個條目是第一個的3倍宛官,第三個條目是5倍數(shù),第四個是4倍數(shù)底洗,最后一個條目是1倍數(shù)咕娄。這樣,就可以得出2個數(shù)組圣勒。

private int[] highD = {1, 3, 5, 4, 6, 2, 7, 5, 6, 3, 2, 1, 2, 1, 2, 6, 5, 4, 2, 7, 5, 2, 3, 1, 2, 1, 3, 2, 1};
private String[] ColorStr = {"#0050dc", "#0650dc", "#0b51dd", "#1151dd", "#1951de", "#2052de", "#2852df", "#3153df", "#3a53e0", "#4454e0", "#4e54e1", "#5855e2", "#6255e2", "#6d56e3", "#7756e3", "#8257e4", "#8c58e5", "#9758e5", "#a159e6", "#ab59e7", "#b45ae7", "#be5ae8", "#c65be8", "#ce5be9", "#d65ce9", "#dd5cea", "#e45cea", "#e95deb", "#ee5deb"};

然后在初始化的時候费变,調(diào)用:

MusicSpectrumBar mb = findViewById(R.id.mb_type);
mb.setDatas(highD, ColorStr);

就可以了摧扇,這邊要注意胡控,高度數(shù)組和顏色數(shù)組的個數(shù)要相同旁趟。

然后昼激,在poseType = 3的情況下,這個高度數(shù)組的表達意思又有點不同了锡搜,在poseType = 3時橙困,每個條目的高度都是相同的耕餐,所以這個高度的數(shù)組,就表達為每個條目肠缔,距離頂部的倍數(shù)值。所以上面的高度數(shù)組槽华,在poseType = 3的情況下趟妥,顯示的效果是:

20190712092838705-2.png

可以看出,這張圖的每個條目亲雪,距離頂部有7種距離疚膊,我將控件的高度減去條目的高度,然后除以6寓盗,就可以得出1倍的距離,在高度數(shù)組中周崭,如果當前值為1喳张,那這個條目,距離頂部為0摸航,如果當前值為2,那距離頂部高度為(2-1)倍數(shù)酱虎。所以距離頂部的高度就是(高度值-1)倍數(shù)得出來的值。

好读串,至此恢暖,音樂頻譜進度條的屬性介紹完了,如果大家在看了源碼之后杰捂,還有什么不了解的,可以給我留言挨队,項目我會慢慢地更新優(yōu)化的蒿往。希望大家支持。

最后情臭,轉(zhuǎn)載的話赌蔑,請標明出處。

----------古誠欺

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跷乐,一起剝皮案震驚了整個濱河市趾浅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浅侨,老刑警劉巖证膨,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異不见,居然都是意外死亡,警方通過查閱死者的電腦和手機稳吮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門灶似,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人席纽,你說我怎么就攤上這事撞蚕」溃” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵刀疙,是天一觀的道長扫倡。 經(jīng)常有香客問我,道長疚鲤,這世上最難降的妖魔是什么缘挑? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘膝蜈。我一直安慰自己吕粗,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布虐秋。 她就那樣靜靜地躺著,像睡著了一般客给。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜻拨,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天缎讼,我揣著相機與錄音坑匠,去河邊找鬼。 笑死厘灼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的舰讹。 我是一名探鬼主播闪朱,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锄开!你這毒婦竟也來了胀蛮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤退腥,失蹤者是張志新(化名)和其女友劉穎再榄,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗅蔬,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年艺蝴,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸟废。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡缩擂,死狀恐怖添寺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情博脑,我是刑警寧澤薄坏,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布胶坠,位于F島的核電站繁堡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏椭蹄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一罩润、第九天 我趴在偏房一處隱蔽的房頂上張望翼馆。 院中可真熱鬧,春花似錦严沥、人聲如沸中姜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至兔跌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間相满,已是汗流浹背桦卒。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留建蹄,地道東北人裕偿。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像劲腿,于是被迫代替她去往敵國和親鸟妙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容