自定义控件之SeekBar —— 我点灯 XSeekBar
来源:互联网 发布:中国核弹头数量 知乎 编辑:程序博客网 时间:2024/06/05 14:55
大家应该都知道Android系统自带的Seekbar控件,虽然用起来很简单方便,但是它会随着客户端Android版本的不同而发生改变,这就会造成UI界面风格不同一,从而导致用户体验下降。
后来我在网上找了很多自定义SeekBar的方法,希望能够实现在不同的Android版本中统一画风。
我找到的方法大多都是通过自定义一个Style文件来进行大量配置,而且还需要.9图片的支持,恕我直言,我特么最烦的就是敲代码敲到一半居然要开启PS再画个图!!!
而且有过类似经历的小伙伴们应该知道,自己作图的时候还得考虑图片尺寸色彩等因素,导致开发效率降低(不单单是效率,简直是特么心情都不好了啊)。于是我决定自己做一个纯代代码控制的自定义控件,来减掉手动绘图的过程。这就是XSeekBar
先来一张效果图
从图上小伙伴们就可以看出来了吧。。。XSeekBar不但可以控制进度条的色彩、粗细、大小还可以用作垂直和水平两种方式。。。
使用方法:
直接在xml的配置文件中使用该控件即可,而且我还通过设置了自定义xml配置属性来实现XSeekBar的多样性。
例如上图中的app:xs_MaxColor ,这就是一个配置进度条颜色的属性。Max这一段的粗细和色彩是通过xs_MaxHeight和xs_MaxColor来设置的,Progress那一段也是同理
可能有的小伙伴会问啦,为什么你每个属性名前面还得加个xs的前缀呢,其实。。。这不关我事啊,我也是被逼的,在工程目录下的Value/attrs.xml文件中配置自定义的xml属性,是不能重名的,就算不是同一个控件也不行,所以我就给它们都加上了前缀。
接下来我逐个的介绍一下这些属性是干嘛用的。。。
xs_radius用来设置控制球的半径
xs_ProgressHeight 和 xs_MaxHeight类似,它们用来控制进度条的粗细(用了height做名字是因为当时没有考虑到垂直XSeekBar的情况)
xs_BCircleColor 和 xs_SCircleColor分别用来设置控制球中两个圆的色彩(B表示Big,S表示Small,英语渣渣的我表示词汇量就这样了)
xs_Progress 和 xs_Max应该就不用多说了吧,它们和普通的SeekBar中得Progress和Max一样。。。
需要再说一下的是xs_orientation,它有两个值可选。。。Vertical和Horizontal,顾名思义,它是用来设置XSeekBar是以水平方式工作,还是垂直方式工作的。
另外设置这些属性通过java代码同样可以设置,大概就都是像下图这样的设置方式了,这里就不再赘述了。。。
还有一个比较重要的地方,就是监听回调,在Activity中(或者随便一个你能用得上的类中)实现OnXSeekBarListener接口,
这个接口只有一个回调方法
onProgressChange(XSeekBar xSeekBar, int progress, boolean isUser);
第一个参数是控件自身,第二个参数是当前的Progress值,第三个参数用来表示是否因为用户控制导致progress值发生了变化,如果为true表示是用户控制的,如果false就说明是内部代码(setProgress方法)控制导致progress变化
http://download.csdn.net/detail/w366549434/9746140
这个链接是源代码。。。其中的java直接塞到你自己的项目里又能用了,里面的另一个xml文件需要放到Value/attrs.xml这里(如果你本身的项目中有用到attrs.xml文件,那么只需要把我的那一部分copy过去就好了)
- 自定义控件之SeekBar —— 我点灯 XSeekBar
- android之控件自定义(seekBar)
- android之控件自定义(seekBar)
- Android 自定义SeekBar控件
- 我的自定义控件之旅——自定义进度条
- 控件——SeekBar/RatingBar
- android控件之SeekBar
- Android控件之SeekBar
- Android控件之SeekBar
- Android控件之SeekBar
- Android控件之SeekBar
- Android 控件学习--自定义SeekBar
- UI控件--自定义SeekBar样式
- Android学习之SeekBar控件
- Android控件开发之SeekBar
- android控件开发之SeekBar
- Android控件开发之SeekBar
- Android常用控件之:SeekBar
- 1196: [HNOI2006]公路修建问题
- (不具有参考性)破解隔壁老王家的WIFI密码--还未整理好
- 【Spring】Service 注入失败,空指针
- hdu 1505 City Game(最大子矩阵)
- Java SE 基础:集合(2)
- 自定义控件之SeekBar —— 我点灯 XSeekBar
- 使用自定义指令的方式实现导航class的切换(另有正则的知识点)
- 机房收费系统合作版——周结账单之报表
- A1099. Build A Binary Search Tree (30)
- V8 虚拟机的GC机制
- 1060. Are They Equal (25)PAT甲级
- 即使没有读者,你也应该写博客 (You should blog even if you have no readers)
- hdu 2571 命运(简单dp)
- 在AWS上部署Django+MySQL+Nginx+uwsgi