自定義水平多顏色的百分比視圖HorizontalPercentageView

最近的項目很多地方需要現(xiàn)實一些數(shù)據(jù)占比,需求是水平顯示各個數(shù)據(jù)的占比和對應的數(shù)據(jù),需求圖大概是這樣:

1

可以看到當百分比文字顯示不下的時候,不顯示百分比文字,view的左右4個角是圓弧的形狀,當只有2個顏色的時候,后面的顏色不顯示百分比,百分比文字保留2位小數(shù)。那這個該怎么做呢,先是想到用progressBar做,但是progressBar只能顯示2段顏色,用多個progressbar就可以了,但是我們有很多段顏色怎么辦呢,接下來

首先,我們要確定需要傳入的參數(shù)有哪些,有顏色、占比數(shù)據(jù),我們定義2個方法來接收傳入的數(shù)據(jù):

顏色的數(shù)組

計算出每個數(shù)據(jù)的總和maxValue

然后常規(guī)操作,創(chuàng)建一個類集成View,new 幾個畫筆,開始干

然后就是要開始繪制了:

我們要獲取到布局的總寬度,后面要計算每一段顏色所占的比例

float viewWidth = this.getWidth();//獲取view的寬度

計算得到每一段所占的百分比

percent = barList.get(i).getMoney() / maxValue;

第一段和最后一段的部分角是圓角,所以要用mPath.addRoundRect(RectF rect, float[] radii, Direction dir)方法,float[] radii,將哪幾個地方是圓角寫進去,在for循環(huán)中,當是第一段和最后一段時,設置對應的角為5dp的弧度

上onDraw的代碼:

這時,就能繪制出需求圖中的樣子了,

沒有動畫效果怎么行呢,我們給他加一個動畫,gif圖效果不太好,可以自己試試

添加動畫,通過mAnimatorPercent來控制,將onDraw中的

percentViewPaintRect.right = lastRight? + percentWidth;改為:

percentViewPaintRect.right = lastRight + percentWidth*mAnimatorPercent;

寫到這里就完了,如果有什么想法可以私信我,最后

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.ios高性能編程 (1).內層 最小的內層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結構(3).初始化時...
    歐辰_OSR閱讀 30,192評論 8 265
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,745評論 25 709
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,910評論 2 59
  • 就在剛剛看到老師說考試分數(shù)已下發(fā),我迫不及待的跑你老爸手機上去看。當時我就傻眼了,這是我兒子的分數(shù)嗎?我滿...
    心悅驛站_cac2閱讀 383評論 0 0

友情鏈接更多精彩內容