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

 更新时间:2019年11月27日 17:13:28   作者:博客_黄大大  
这篇文章主要为大家详细介绍了android自定义组件实现仪表计数盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

效果展示

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

项目集成:MeterView

项目目录——>build.gradle

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

app——>build.gradle

dependencies { 
  ... 
  implementation 'com.github.pimaryschoolstudent:MeterView:1.0.1'
  
}

组件使用

//添加数据
 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("优秀")
 arrayList.add("100")
 meter.setScaleArray(arrayList)
 
 //设置数据
 //颜色
 meter.getDataManager().ScaleTextColor = Color.BLUE  //底盘弧刻度文字颜色
 meter.getDataManager().DashBoardColor = Color.BLUE  //底盘弧度颜色
 meter.getDataManager().PointColor = Color.RED   //分数点颜色
 meter.getDataManager().SourceTextColor = Color.RED  //分数颜色
 meter.getDataManager().SourceCurveColor = Color.RED  //分数弧颜色
 meter.getDataManager().CheckScaleTextColor = Color.BLACK //选中分数刻度颜色
 
 //大小 dp2px(dp转px) px2dp(px转dp)
 meter.getDataManager().CheckScaleTextSize = meter.dp2Px(15f) //选中分数刻度文字大小
 meter.getDataManager().ScaleTextSize = meter.dp2Px(10f)  //刻度文字大小
 meter.getDataManager().SourceTextSize = meter.dp2Px(40f)  //分数文字大小
 
 meter.getDataManager().PointSize = meter.dp2Px(5f)    //分数点半径大小
 meter.getDataManager().SourceCurveSize = meter.dp2Px(10f)  //分数弧宽度大小
 meter.getDataManager().BoardCurveSize = meter.dp2Px(5f)  //底盘弧宽度大小
 
 meter.getDataManager().SourceTextInterval = meter.dp2Px(20.5f) //分数离顶部的间隔大小
 
 //其他设置
 meter.getDataManager().Rate = 30 //分数弧动画速率(30/s)
 
 meter.getDataManager().ShowSource = true //是否显示分数
 
 meter.getDataManager().SourceTextAlign = MeterView.SOURCE_CENTER //分数居中方式 SOURCE_CENTER(底盘居中) OURCE_START(底盘顶部) SOURCE_END (底盘底部)
 
//meter.getDataManager().startAngle = -180f //底盘弧开始点的角度(起点为组件最右边点,当等于-90时为组件中点)
//meter.getDataManager().sweepAngle = 180f //底盘弧角度大小
 
 meter.getDataManager().sourceShowType = MeterView.SOURCE_NUMBER //显示的分数类型 SOURCE_NUMBER:数字(百分制) SOURCE_SCALETEXT:刻度文字
 meter.getDataManager().meterDebug = false //打开底部矩形,方便调试和添加其他元素
 
 //跑分
 tv.text = "runSource(45)......"
 meter.runSource(45) //根据分数跑分(百分制,大于100则等于100)
//meter.runIndex(5) //根据数据索引跑分 (不为-1,不大于数据大小)
//meter.addIndex(2) //在当前基础上增加两个索引的分数
//meter.subtractIndex(1) //在当前基础上减少一个索引的分数
//meter.addSource(20)//在当前基础上增加20分
//meter.subtractSource(20)//在当前基础上减少20分
 thread {   //支持异步线程直接调用
  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)......" })
 }
 //分数改变监听器
 meter.setSourceChangeListener(object :MeterView.SourceChangeListener{
  override fun CheckScaleTextChange(currentText: String) { //选中刻度文字改变
   Log.e("currentScaleText"," currentScaleText $currentText")
  }
 
  override fun SourceChange(source: Int,currentScaleText:String) {  //分数改变
   Log.e("meter","source $source currentScaleText $currentScaleText")
  }
 })

xml属性

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

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

相关文章

  • Android编程实现VideoView循环播放功能的方法

    Android编程实现VideoView循环播放功能的方法

    这篇文章主要介绍了Android编程实现VideoView循环播放功能的方法,结合简单实例形式分析了Android使用VideoView实现多媒体播放功能的操作技巧,需要的朋友可以参考下
    2017-02-02
  • Android 图片网格布局控件示例代码

    Android 图片网格布局控件示例代码

    本篇文章主要介绍了Android 图片网格布局控件示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Android编程实现监控apk安装,卸载,替换的方法

    Android编程实现监控apk安装,卸载,替换的方法

    这篇文章主要介绍了Android编程实现监控apk安装,卸载,替换的方法,涉及Android基于Intent监控apk状态的功能实现技巧,需要的朋友可以参考下
    2016-01-01
  • 基于Android代码实现常用布局

    基于Android代码实现常用布局

    大家在日常中经常见到用xml文件实现android常用布局,但是大家知道如何用代码实现呢?使用代码实现可以帮助我们学习sdk api,所以小编把我日常整理些关于android常用布局代码实现分享给大家
    2015-11-11
  • Android TextView实现词组高亮的示例代码

    Android TextView实现词组高亮的示例代码

    本篇文章主要介绍了Android TextView实现词组高亮的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • android动态设置app当前运行语言的方法

    android动态设置app当前运行语言的方法

    下面小编就为大家带来一篇android动态设置app当前运行语言的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Android SurfaceView预览变形完美解决方法

    Android SurfaceView预览变形完美解决方法

    本篇文章主要介绍了Android SurfaceView预览变形完美解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Android 基于Bitmap的四种图片压缩方式

    Android 基于Bitmap的四种图片压缩方式

    本文中探究的图片压缩方式主要是基于 Bitmap 的 api 实现。文中探究实现的压缩方式有四种:质量压缩、采样率压缩、Matrix 缩放压缩、图片编码格式压缩,感兴趣的朋友可以参考下
    2021-05-05
  • Android Activity中使用Intent实现页面跳转与参数传递的方法

    Android Activity中使用Intent实现页面跳转与参数传递的方法

    这篇文章主要介绍了Android Activity中使用Intent实现页面跳转与参数传递的方法,结合实例形式简单分析了Android中的Activity交互操作相关技巧,需要的朋友可以参考下
    2016-07-07
  • Android 实现抢购倒计时功能的示例

    Android 实现抢购倒计时功能的示例

    这篇文章主要介绍了Android 实现抢购倒计时功能的示例,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-03-03

最新评论