最近做项目有个需求是要使用seekbar的,但是原生的seekbar又不满足要求,只能自己动手操作了。  
首先先交代下需求:在seekbar滑动的过程中在其上方动态的显示当前的进度。

思路:  
1、在seekbar上方动态的添加一个textview   
2、在seekbar滑动监听中修改textview的位置 
 
就是这么简单,那么实现起来怎么样呢?   
为了能够动态的添加textview所以新建了而一个TextMoveLayout类并且重写了onMessure方法使其能够wrap_content,代码如下:

    public class TextMoveLayout extends ViewGroup {public TextMoveLayout(Context context) {super(context);}public TextMoveLayout(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public TextMoveLayout(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);int desiredWidth = 100;int desiredHeight = 100;int widthMode = MeasureSpec.getMode(widthMeasureSpec);int widthSize = MeasureSpec.getSize(widthMeasureSpec);int heightMode = MeasureSpec.getMode(heightMeasureSpec);int heightSize = MeasureSpec.getSize(heightMeasureSpec);int width;int height;if (widthMode == MeasureSpec.EXACTLY) {width = widthSize;} else if (widthMode == MeasureSpec.AT_MOST) {width = Math.min(desiredWidth, widthSize);} else {width = desiredWidth;}if (heightMode == MeasureSpec.EXACTLY) { height = heightSize;} else if (heightMode == MeasureSpec.AT_MOST) { height = Math.min(desiredHeight, heightSize);} else { height = desiredHeight;}setMeasuredDimension(width, height);}}

接下来就是要确定textview的位置了,也就是当前seekbar的thume的位置:

  坐标的确定:seekbar的背景长度*seekbar当前进度/seekbar的max - textview的长度/2 + textview的margin值

代码表示如下:

    //测量textview的文字宽度float measureText = mPaint.measureText(moveText.getText().toString().trim());//获取seekbar背景的bounds 通过bounds获取widthRect bounds = mSeekbar.getProgressDrawable().getBounds();int xFloat = (int) (bounds.width() * mSeekbar.getProgress() / mSeekbar.getMax() - measureText / 2 + DensityUtil.px2dip(MainActivity.this, mLeftMargin));

以上代码是实现需求的核心代码。

获取Xml中配置的margin值

    View childAt = mParentView.getChildAt(0);ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) childAt.getLayoutParams();mLeftMargin = marginLayoutParams.leftMargin;

预览图如下:

最后附上源码下载地址:

http://download.csdn.net/detail/siyemuzi/9596329

扫描下方二维码关注公众号,及时获取文章推送



带数字进度的seekbar相关推荐

  1. Android仿虾米音乐播放器之自定义进度条seekbar

    先上图吧,仿照写的进度条 很明显不是系统的自带的进度条,所以我们需要自定义来实现这个效果,先看看官方给的例子 <layer-list xmlns:android="http://sch ...

  2. php 进度条百分比算法,实例讲解Ajax实现简单带百分比进度条

    最近做项目遇到这样的需求要求当进行文件长传保存等操作时,能在页面显示一个带百分比的进度条,给用户一个好的交互体验,下面通过实例代码给大家介绍基于ajax实现带百分比进度条效果,需要的的朋友参考下吧,希 ...

  3. 数字进度条组件NumberProgressBar

     数字进度条组件NumberProgressBar NumberProgressBar是一款数字进度条组件.它不仅可以通过进度条的变化展现进度,还可以通过跟随文字精确表示进度值.开发者可以对进度条进行 ...

  4. Android之TabLayout+ViewPager2+FragmentStateAdapter实现带数字变化的TAB选项

    1 问题 TabLayout+ViewPager2实现带数字变化的TAB选项,然后左边滑动或者点击上面的Tab切换fragment不能刷新 2 结果爆照 3 代码实现 layer_tab_indica ...

  5. mardown 标题带数字_标题中带有数字的故事更成功吗?

    mardown 标题带数字 统计 (Statistics) I have read a few stories on Medium about writing advice, and there we ...

  6. html5圆形提交按钮样式,HTML5 SVG带圆形进度条动画的提交按钮特效

    这是一款非常实用的HTML5 SVG带圆形进度条动画的提交按钮特效.该提交按钮在被点击之后,按钮变形为一个圆形的进度条,当进度条运行一周之后,可以设置提交成功和提交失败的两种按钮状态. 制作方法 HT ...

  7. Android带数字拼音与带音标拼音互转工具类

    - 前言 刚进入上一家公司时,编写过一个学汉语项目,这个项目对我的锻炼还是也挺大的,毕竟一个刚毕业的大学生,从来没有接手过公司项目,而所从事的公司是一家偏硬件的语音公司,手机端编程的人员在我之前几个月 ...

  8. photoshop将图层导出到文件脚本不带数字序号、下划线方法

    photoshop将图层导出到文件脚本不带数字序号.下划线方法 这段时间一直在ps中批量处理图片,有时需要将每个图层里的图片分别导出到jpg或其它格式的图片,如果用ps自带的"将图层导出到文 ...

  9. MUI-list(列表),普通列表、带箭头列表、带数字角标列表、带图文列表

    本文主要介绍list(列表)的几种展现形式:普通列表.带箭头列表.带数字角标列表.带图文列表 效果图如下: 1.普通列表:只需要在ul节点上添加.mui-table-view类.在li节点上添加.mu ...

最新文章

  1. 美团即时物流的分布式系统架构设计
  2. linux 下的远程上传命令行,使用scp命令用命令行从服务器上传下载文件
  3. hdu 1418 抱歉 (欧拉公式)
  4. (pytorch-深度学习系列)pytorch中backwards()函数对梯度的操作
  5. Luogu P2055 [ZJOI2009]假期的宿舍
  6. js中==和===区别
  7. 基于node的登入例子(node-koa-mongoose)
  8. 知秋源码解读分享系列
  9. NYOJ--364--田忌赛马
  10. mysql rounddown_Is there a ROUNDDOWN() function in sql as there is in EXCEL
  11. Python基本用法练习题
  12. AMEsim2019.2的安装和matlab2019的联合仿真
  13. 论文模型构建的步骤_论文实证经验分享|VAR模型实操步骤(下)
  14. SMSSDK接入(Mob短信SDK接入)
  15. 等价类划分法用例设计
  16. 不做自了汉,大家好才是真的好
  17. 学会善于总结,善于表达
  18. c语言什么意思 app 视频 新闻,开发新闻资讯APP需要哪些功能?
  19. 拍照扫描怎么弄?你可以试一下这两个方法
  20. 否定、合取、析取、条件、双条件定义及LaTex公式

热门文章

  1. Kaggle实战入门:泰坦尼克号生还预测(进阶版)
  2. 盘点北邮IT类就业方向
  3. 少有人走的路 -- 自律(读后感)
  4. 黑苹果的初安装与升级 VMware12+mac os x 10.9+升级+VMware Tools安装
  5. 苹果“闭关锁国”,造就了天堂还是炼狱?
  6. MATLAB(四)初阶绘图
  7. 神策数据支持小程序用户行为分析
  8. 安装docker desktop失败解决办法
  9. ZEMAX笔记1——棱镜
  10. 免费送1000套VI设计企业办公PSD模版,全是设计师最受欢迎的模版素材一共56个G...