最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android自定義組件實(shí)現(xiàn)儀表計(jì)數(shù)盤

 更新時(shí)間:2019年11月27日 17:13:28   作者:博客_黃大大  
這篇文章主要為大家詳細(xì)介紹了android自定義組件實(shí)現(xiàn)儀表計(jì)數(shù)盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前幾天開發(fā)公司項(xiàng)目,有個(gè)地方要做一個(gè)分?jǐn)?shù)的儀表盤,根據(jù)分?jǐn)?shù)跑分,(設(shè)計(jì)的人估計(jì)是看到招商銀行App的賬號總覽)

網(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"

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在Android中使用SQLite數(shù)據(jù)庫及其操作詳解

    在Android中使用SQLite數(shù)據(jù)庫及其操作詳解

    在?Android?開發(fā)中,使用?SQLite?數(shù)據(jù)庫是一種常見的持久化數(shù)據(jù)存儲方式,本文將通過代碼示例詳細(xì)講解如何在?Android?中創(chuàng)建數(shù)據(jù)庫表、插入數(shù)據(jù)、執(zhí)行查詢操作以及驗(yàn)證查詢結(jié)果,需要的朋友可以參考下
    2024-08-08
  • Kotlin中關(guān)于內(nèi)聯(lián)函數(shù)的一些理解分享

    Kotlin中關(guān)于內(nèi)聯(lián)函數(shù)的一些理解分享

    這篇文章主要給大家介紹了關(guān)于Kotlin中內(nèi)聯(lián)函數(shù)的一些理解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Android組件Activity的啟動(dòng)過程深入分析

    Android組件Activity的啟動(dòng)過程深入分析

    這篇文章主要介紹了Android組件Activity的啟動(dòng)過程,Activity作為Android四大組件之一,他的啟動(dòng)沒有那么簡單。這里涉及到了系統(tǒng)服務(wù)進(jìn)程,啟動(dòng)過程細(xì)節(jié)很多,這里我只展示主體流程。activity的啟動(dòng)流程隨著版本的更替,代碼細(xì)節(jié)一直在進(jìn)行更改,每次都會有很大的修改
    2023-04-04
  • Android之OOM異常解決案例講解

    Android之OOM異常解決案例講解

    這篇文章主要介紹了Android之OOM異常解決案例講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • anroid開發(fā)教程之spinner下拉列表的使用示例

    anroid開發(fā)教程之spinner下拉列表的使用示例

    這篇文章主要介紹了anroid的spinner下拉列表的使用示例,需要的朋友可以參考下
    2014-04-04
  • Android studio 去除版本控制教程

    Android studio 去除版本控制教程

    這篇文章主要介紹了Android studio 去除版本控制教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • android實(shí)現(xiàn)歡迎界面效果

    android實(shí)現(xiàn)歡迎界面效果

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)歡迎界面效果,涉及到頁面的滑動(dòng)實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android使用表格布局設(shè)計(jì)注冊界面

    Android使用表格布局設(shè)計(jì)注冊界面

    這篇文章主要為大家詳細(xì)介紹了Android使用表格布局設(shè)計(jì)注冊界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Android9.0 靜默安裝源碼的實(shí)現(xiàn)

    Android9.0 靜默安裝源碼的實(shí)現(xiàn)

    這篇文章主要介紹了Android9.0 靜默安裝源碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Android實(shí)現(xiàn)文字消除效果

    Android實(shí)現(xiàn)文字消除效果

    由于項(xiàng)目和語音識別相關(guān),有時(shí)候人在不經(jīng)意間交流的無效音頻會被識別出來,并展示于界面,為了美觀,客戶要求我們將這些無效的識別文本用一個(gè)從右到左的動(dòng)畫給清除,于是便有了下述的技術(shù)實(shí)現(xiàn)。感興趣的朋友可以參考下
    2021-06-06

最新評論

禄丰县| 伊金霍洛旗| 托克逊县| 读书| 安义县| 察雅县| 乌兰县| 饶河县| 恩平市| 游戏| 木兰县| 邓州市| 永安市| 龙游县| 台前县| 云南省| 贡觉县| 沅陵县| 确山县| 临泉县| 固安县| 唐海县| 石泉县| 濮阳市| 万年县| 凌源市| 赫章县| 许昌市| 宣武区| 册亨县| 莲花县| 陕西省| 黎川县| 瑞丽市| 贵溪市| 静宁县| 云梦县| 子长县| 建宁县| 玉门市| 齐河县|