android自定义组件实现仪表计数盘

前端之家收集整理的这篇文章主要介绍了android自定义组件实现仪表计数盘前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前几天开发公司项目,有个地方要做一个分数的仪表盘,根据分数跑分,(设计的人估计是看到招商银行App的账号总览)

网上好像找不到类似的组件,那就只能自己开发啦。趁着空余时间,把组件进行了一些改进,并封装成依赖库,分享给大家

效果展示

一款颜色,文字弧度大小,仪表角度都可以自定义的组件

android自定义组件实现仪表计数盘


android自定义组件实现仪表计数盘


android自定义组件实现仪表计数盘


android自定义组件实现仪表计数盘


android自定义组件实现仪表计数盘


项目集成:MeterView

项目目录——>build.gradle

  1. allprojects {
  2.  
  3. repositories {
  4.  
  5. ...
  6.  
  7. maven { url 'https://jitpack.io' }
  8.  
  9. }
  10.  
  11. }

app——>build.gradle

  1. dependencies {
  2. ...
  3. implementation 'com.github.pimaryschoolstudent:MeterView:1.0.1'
  4.  
  5. }

组件使用

  1. //添加数据
  2. var arrayList:ArrayList<String> = ArrayList()
  3. arrayList.add("0")
  4. arrayList.add("10")
  5. arrayList.add("20")
  6. arrayList.add("30")
  7. arrayList.add("40")
  8. arrayList.add("50")
  9. arrayList.add("较差")
  10. arrayList.add("中等")
  11. arrayList.add("良好")
  12. arrayList.add("优秀")
  13. arrayList.add("100")
  14. meter.setScaleArray(arrayList)
  15.  
  16. //设置数据
  17. //颜色
  18. meter.getDataManager().ScaleTextColor = Color.BLUE //底盘弧刻度文字颜色
  19. meter.getDataManager().DashBoardColor = Color.BLUE //底盘弧度颜色
  20. meter.getDataManager().PointColor = Color.RED //分数点颜色
  21. meter.getDataManager().SourceTextColor = Color.RED //分数颜色
  22. meter.getDataManager().SourceCurveColor = Color.RED //分数弧颜色
  23. meter.getDataManager().CheckScaleTextColor = Color.BLACK //选中分数刻度颜色
  24.  
  25. //大小 dp2px(dp转px) px2dp(px转dp)
  26. meter.getDataManager().CheckScaleTextSize = meter.dp2Px(15f) //选中分数刻度文字大小
  27. meter.getDataManager().ScaleTextSize = meter.dp2Px(10f) //刻度文字大小
  28. meter.getDataManager().SourceTextSize = meter.dp2Px(40f) //分数文字大小
  29.  
  30. meter.getDataManager().PointSize = meter.dp2Px(5f) //分数点半径大小
  31. meter.getDataManager().SourceCurveSize = meter.dp2Px(10f) //分数弧宽度大小
  32. meter.getDataManager().BoardCurveSize = meter.dp2Px(5f) //底盘弧宽度大小
  33.  
  34. meter.getDataManager().SourceTextInterval = meter.dp2Px(20.5f) //分数离顶部的间隔大小
  35.  
  36. //其他设置
  37. meter.getDataManager().Rate = 30 //分数弧动画速率(30/s)
  38.  
  39. meter.getDataManager().ShowSource = true //是否显示分数
  40.  
  41. meter.getDataManager().SourceTextAlign = MeterView.SOURCE_CENTER //分数居中方式 SOURCE_CENTER(底盘居中) OURCE_START(底盘顶部) SOURCE_END (底盘底部
  42.  
  43. //meter.getDataManager().startAngle = -180f //底盘弧开始点的角度(起点为组件最右边点,当等于-90时为组件中点)
  44. //meter.getDataManager().sweepAngle = 180f //底盘弧角度大小
  45.  
  46. meter.getDataManager().sourceShowType = MeterView.SOURCE_NUMBER //显示的分数类型 SOURCE_NUMBER:数字(百分制) SOURCE_SCALETEXT:刻度文字
  47. meter.getDataManager().meterDebug = false //打开底部矩形,方便调试和添加其他元素
  48.  
  49. //跑分
  50. tv.text = "runSource(45)......"
  51. meter.runSource(45) //根据分数跑分(百分制,大于100则等于100)
  52. //meter.runIndex(5) //根据数据索引跑分 (不为-1,不大于数据大小)
  53. //meter.addIndex(2) //在当前基础上增加两个索引的分数
  54. //meter.subtractIndex(1) //在当前基础上减少一个索引的分数
  55. //meter.addSource(20)//在当前基础上增加20分
  56. //meter.subtractSource(20)//在当前基础上减少20分
  57. thread { //支持异步线程直接调用
  58. Thread.sleep(4000)
  59. meter.addIndex(3)
  60. runOnUiThread(Runnable { tv.text = "addIndex(3)......" })
  61. Thread.sleep(4000)
  62. meter.subtractIndex(1)
  63. runOnUiThread(Runnable { tv.text = "subtractIndex(1)......" })
  64. Thread.sleep(4000)
  65. meter.addSource(20)
  66. runOnUiThread(Runnable { tv.text = "addSource(20)......" })
  67. Thread.sleep(4000)
  68. meter.subtractSource(20)
  69. runOnUiThread(Runnable { tv.text = "subtractSource(20)......" })
  70. Thread.sleep(4000)
  71. meter.runIndex(10)
  72. runOnUiThread(Runnable { tv.text = "runIndex(10)......" })
  73. }
  74. //分数改变监听器
  75. meter.setSourceChangeListener(object :MeterView.SourceChangeListener{
  76. override fun CheckScaleTextChange(currentText: String) { //选中刻度文字改变
  77. Log.e("currentScaleText"," currentScaleText $currentText")
  78. }
  79.  
  80. override fun SourceChange(source: Int,currentScaleText:String) { //分数改变
  81. Log.e("meter","source $source currentScaleText $currentScaleText")
  82. }
  83. })

xml属性

  1. app:DashBoardColor="#1C65CE" //底盘弧度颜色
  2. app:ScaleTextColor="#888585" //底盘弧刻度文字颜色
  3. app:SourceCurveColor="#09C0E5" //分数弧颜色
  4. app:CheckScaleTextColor="#000" //选中分数刻度颜色
  5. app:PointColor="#09C0E5" //分数点颜色
  6. app:SourceTextColor="#000" //分数颜色
  7.  
  8. app:CheckScaleTextSize="18dp" //选中分数刻度文字大小
  9. app:SourceTextSize="30dp" //分数文字大小
  10. app:ScaleTextSize="14dp" //刻度文字大小
  11.  
  12. app:BoardCurveSize="2dp" //底盘弧宽度大小
  13. app:SourceCurveSize="10dp" //分数弧宽度大小
  14. app:PointSize="8dp" //分数点半径大小
  15.  
  16. app:ScaleTextInterval="0dp" //刻度离顶部的间隔大小
  17. app:SourceTextInterval="0dp" //分数离顶部的间隔大小
  18.  
  19. app:SourceTextAlign="start" //分数居中方式 center(底盘居中)start(底盘顶部)end (底盘底部)
  20. app:SourceShowType="number" //显示的分数类型 number:数字(百分制) scaleText:刻度文字
  21.  
  22. app:Rate="20" //分数弧动画速率(20/s)
  23.  
  24. app:StartAnglee="-180" //底盘弧开始点的角度(起点为组件最右边点,当等于-90时为组件中点)
  25. app:SweepAnglee="320" //底盘弧角度大小
  26.  
  27. app:ShowSource="true" //是否显示分数,同下
  28. app:ShowScaleText="true"
  29. app:ShowCheckScaleText="true"
  30. app:ShowPoint="true"
  31. app:ShowSourceCurve="true"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

猜你在找的Android相关文章