android自定義組件實(shí)現(xiàn)儀表計(jì)數(shù)盤
前幾天開發(fā)公司項(xiàng)目,有個(gè)地方要做一個(gè)分?jǐn)?shù)的儀表盤,根據(jù)分?jǐn)?shù)跑分,(設(shè)計(jì)的人估計(jì)是看到招商銀行App的賬號(hào)總覽)
網(wǎng)上好像找不到類似的組件,那就只能自己開發(fā)啦。趁著空余時(shí)間,把組件進(jìn)行了一些改進(jìn),并封裝成依賴庫,分享給大家
效果展示
一款顏色,文字弧度大小,儀表角度都可以自定義的組件
項(xiàng)目集成:MeterView
項(xiàng)目目錄——>build.gradle
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
app——>build.gradle
dependencies { ... implementation 'com.github.pimaryschoolstudent:MeterView:1.0.1' }
組件使用
//添加數(shù)據(jù) var arrayList:ArrayList<String> = ArrayList() arrayList.add("0") arrayList.add("10") arrayList.add("20") arrayList.add("30") arrayList.add("40") arrayList.add("50") arrayList.add("較差") arrayList.add("中等") arrayList.add("良好") arrayList.add("優(yōu)秀") arrayList.add("100") meter.setScaleArray(arrayList) //設(shè)置數(shù)據(jù) //顏色 meter.getDataManager().ScaleTextColor = Color.BLUE //底盤弧刻度文字顏色 meter.getDataManager().DashBoardColor = Color.BLUE //底盤弧度顏色 meter.getDataManager().PointColor = Color.RED //分?jǐn)?shù)點(diǎn)顏色 meter.getDataManager().SourceTextColor = Color.RED //分?jǐn)?shù)顏色 meter.getDataManager().SourceCurveColor = Color.RED //分?jǐn)?shù)弧顏色 meter.getDataManager().CheckScaleTextColor = Color.BLACK //選中分?jǐn)?shù)刻度顏色 //大小 dp2px(dp轉(zhuǎn)px) px2dp(px轉(zhuǎn)dp) meter.getDataManager().CheckScaleTextSize = meter.dp2Px(15f) //選中分?jǐn)?shù)刻度文字大小 meter.getDataManager().ScaleTextSize = meter.dp2Px(10f) //刻度文字大小 meter.getDataManager().SourceTextSize = meter.dp2Px(40f) //分?jǐn)?shù)文字大小 meter.getDataManager().PointSize = meter.dp2Px(5f) //分?jǐn)?shù)點(diǎn)半徑大小 meter.getDataManager().SourceCurveSize = meter.dp2Px(10f) //分?jǐn)?shù)弧寬度大小 meter.getDataManager().BoardCurveSize = meter.dp2Px(5f) //底盤弧寬度大小 meter.getDataManager().SourceTextInterval = meter.dp2Px(20.5f) //分?jǐn)?shù)離頂部的間隔大小 //其他設(shè)置 meter.getDataManager().Rate = 30 //分?jǐn)?shù)弧動(dòng)畫速率(30/s) meter.getDataManager().ShowSource = true //是否顯示分?jǐn)?shù) meter.getDataManager().SourceTextAlign = MeterView.SOURCE_CENTER //分?jǐn)?shù)居中方式 SOURCE_CENTER(底盤居中) OURCE_START(底盤頂部) SOURCE_END (底盤底部) //meter.getDataManager().startAngle = -180f //底盤弧開始點(diǎn)的角度(起點(diǎn)為組件最右邊點(diǎn),當(dāng)?shù)扔?90時(shí)為組件中點(diǎn)) //meter.getDataManager().sweepAngle = 180f //底盤弧角度大小 meter.getDataManager().sourceShowType = MeterView.SOURCE_NUMBER //顯示的分?jǐn)?shù)類型 SOURCE_NUMBER:數(shù)字(百分制) SOURCE_SCALETEXT:刻度文字 meter.getDataManager().meterDebug = false //打開底部矩形,方便調(diào)試和添加其他元素 //跑分 tv.text = "runSource(45)......" meter.runSource(45) //根據(jù)分?jǐn)?shù)跑分(百分制,大于100則等于100) //meter.runIndex(5) //根據(jù)數(shù)據(jù)索引跑分 (不為-1,不大于數(shù)據(jù)大?。? //meter.addIndex(2) //在當(dāng)前基礎(chǔ)上增加兩個(gè)索引的分?jǐn)?shù) //meter.subtractIndex(1) //在當(dāng)前基礎(chǔ)上減少一個(gè)索引的分?jǐn)?shù) //meter.addSource(20)//在當(dāng)前基礎(chǔ)上增加20分 //meter.subtractSource(20)//在當(dāng)前基礎(chǔ)上減少20分 thread { //支持異步線程直接調(diào)用 Thread.sleep(4000) meter.addIndex(3) runOnUiThread(Runnable { tv.text = "addIndex(3)......" }) Thread.sleep(4000) meter.subtractIndex(1) runOnUiThread(Runnable { tv.text = "subtractIndex(1)......" }) Thread.sleep(4000) meter.addSource(20) runOnUiThread(Runnable { tv.text = "addSource(20)......" }) Thread.sleep(4000) meter.subtractSource(20) runOnUiThread(Runnable { tv.text = "subtractSource(20)......" }) Thread.sleep(4000) meter.runIndex(10) runOnUiThread(Runnable { tv.text = "runIndex(10)......" }) } //分?jǐn)?shù)改變監(jiān)聽器 meter.setSourceChangeListener(object :MeterView.SourceChangeListener{ override fun CheckScaleTextChange(currentText: String) { //選中刻度文字改變 Log.e("currentScaleText"," currentScaleText $currentText") } override fun SourceChange(source: Int,currentScaleText:String) { //分?jǐn)?shù)改變 Log.e("meter","source $source currentScaleText $currentScaleText") } })
xml屬性
app:DashBoardColor="#1C65CE" //底盤弧度顏色 app:ScaleTextColor="#888585" //底盤弧刻度文字顏色 app:SourceCurveColor="#09C0E5" //分?jǐn)?shù)弧顏色 app:CheckScaleTextColor="#000" //選中分?jǐn)?shù)刻度顏色 app:PointColor="#09C0E5" //分?jǐn)?shù)點(diǎn)顏色 app:SourceTextColor="#000" //分?jǐn)?shù)顏色 app:CheckScaleTextSize="18dp" //選中分?jǐn)?shù)刻度文字大小 app:SourceTextSize="30dp" //分?jǐn)?shù)文字大小 app:ScaleTextSize="14dp" //刻度文字大小 app:BoardCurveSize="2dp" //底盤弧寬度大小 app:SourceCurveSize="10dp" //分?jǐn)?shù)弧寬度大小 app:PointSize="8dp" //分?jǐn)?shù)點(diǎn)半徑大小 app:ScaleTextInterval="0dp" //刻度離頂部的間隔大小 app:SourceTextInterval="0dp" //分?jǐn)?shù)離頂部的間隔大小 app:SourceTextAlign="start" //分?jǐn)?shù)居中方式 center(底盤居中)start(底盤頂部)end (底盤底部) app:SourceShowType="number" //顯示的分?jǐn)?shù)類型 number:數(shù)字(百分制) scaleText:刻度文字 app:Rate="20" //分?jǐn)?shù)弧動(dòng)畫速率(20/s) app:StartAnglee="-180" //底盤弧開始點(diǎn)的角度(起點(diǎn)為組件最右邊點(diǎn),當(dāng)?shù)扔?90時(shí)為組件中點(diǎn)) app:SweepAnglee="320" //底盤弧角度大小 app:ShowSource="true" //是否顯示分?jǐn)?shù),同下 app:ShowScaleText="true" app:ShowCheckScaleText="true" app:ShowPoint="true" app:ShowSourceCurve="true"
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:Android10開發(fā)者常見問題(小結(jié))
欄 目:Android
下一篇:Android中外接鍵盤的檢測(cè)的實(shí)現(xiàn)
本文標(biāo)題:android自定義組件實(shí)現(xiàn)儀表計(jì)數(shù)盤
本文地址:http://mengdiqiu.com.cn/a1/Android/9048.html
您可能感興趣的文章
- 01-10Android自定義View之繪制圓形頭像功能
- 01-10Android實(shí)現(xiàn)雙擊返回鍵退出應(yīng)用實(shí)現(xiàn)方法詳解
- 01-10android實(shí)現(xiàn)記住用戶名和密碼以及自動(dòng)登錄
- 01-10android實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能
- 01-10Android 友盟第三方登錄與分享的實(shí)現(xiàn)代碼
- 01-10C++自定義API函數(shù)實(shí)現(xiàn)大數(shù)相乘算法
- 01-10android實(shí)現(xiàn)指紋識(shí)別功能
- 01-10Emoji表情在Android JNI中的兼容性問題詳解
- 01-10Android實(shí)現(xiàn)圓形漸變加載進(jìn)度條
- 01-10android開發(fā)環(huán)境中SDK文件夾下的所需內(nèi)容詳解


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10Android自定義View之繪制圓形頭像功能
- 01-10Android實(shí)現(xiàn)雙擊返回鍵退出應(yīng)用實(shí)現(xiàn)方
- 01-10android實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能
- 01-10android實(shí)現(xiàn)記住用戶名和密碼以及自動(dòng)
- 01-10C++自定義API函數(shù)實(shí)現(xiàn)大數(shù)相乘算法
- 01-10Android 友盟第三方登錄與分享的實(shí)現(xiàn)代
- 01-10android實(shí)現(xiàn)指紋識(shí)別功能
- 01-10如何給Flutter界面切換實(shí)現(xiàn)點(diǎn)特效
- 01-10Android實(shí)現(xiàn)圓形漸變加載進(jìn)度條
- 01-10Emoji表情在Android JNI中的兼容性問題詳
隨機(jī)閱讀
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)