Android之SeekBar

一、简介

SeekBar意思为拖动条,是ProgressBar的一个子类。

在我们安卓的开发中也是应用非常的广泛。如音乐播放、音量条、播放进度条,等等。Android系统只提供了水平的,默认的样式,我们也可以根据自己需求自定义样式。

二、常用属性和方法

seekBar继承了ProgressBar,ProgressBar所支持的xml属性和方法都适用于seekBar,ProgressBar的使用可以看这篇博客Android之 ProgressBar的简单使用

这里介绍下最常用属性和方法:

属性名 含义
max 设置该进度条的最大值
progress 设置该进度条的已完成进度值
progressDrawable 自定义drawable显示
secondaryProgress 定义二级进度值,值介于0到max。该进度在主进度和背景之间。比如用于网络播放视频时,二级进度用于表示缓冲进度,主进度用于表示播放进度。
thumb 设置进度条的滑块图片
splitTrack 滑块底部 背景样式 (false为透明 )
getMax() //返回这个进度条的范围的上限getProgress():返回进度
getsecondaryProgress() //返回二级进度
incrementProgressBy(int diff) //指定增加的进度
isIndeterminate() //指示进度条是否在不确定模式下
setIndeterminate(boolean indeterminate) //设置不确定模式下

三、简单使用

实现一个简单seekbar监听事件,改变图片的透明度

  1. 编写布局代码

因为图片的透明度分为256阶(0-255),所以我们的max属性要设置为255,初始值progress属性也设置为255,使照片不透明可见。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="拖动条"android:layout_gravity="center"android:layout_marginTop="50dp"/><ImageViewandroid:id="@+id/iv_zhuyin"android:layout_width="match_parent"android:layout_height="250dp"android:src="@drawable/zhuyin"/><SeekBarandroid:id="@+id/seek_bar"android:layout_marginLeft="15dp"android:layout_marginRight="15dp"android:splitTrack="false"android:max="255"android:progress="255"android:layout_width="match_parent"android:layout_height="wrap_content"android:thumb="@drawable/seekbar01"/><TextViewandroid:id="@+id/tv_progress"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_gravity="center"android:text="当前透明度:255/255"/></LinearLayout>
  1. 编写MainActivity里的java代码

主要是实现一个seek的监听事件,OnSeekBarChangeListener() 可以为拖动条添加监听事件,该监听事件重写三个方法。

方法 作用
onStartTrackingTouch 当开始滑动滑块时,会执行该方法下的代码
onStopTrackingTouch 当结束滑动滑块时,会执行该方法下的代码
onProgressChanged 当滑块进度改变时,会执行该方法下的代码

public class MainActivity extends AppCompatActivity {private SeekBar mSeekBar;private TextView mTextView;private ImageView mImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mSeekBar=findViewById(R.id.seek_bar);mTextView=findViewById(R.id.tv_progress);mImageView=findViewById(R.id.iv_zhuyin);mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Override  //当滑块进度改变时,会执行该方法下的代码public void onProgressChanged(SeekBar seekBar, int i, boolean b) {mImageView.setAlpha(i);//设置当前的透明度mTextView.setText("当前透明度: " +i+"/255");}@Override  //当开始滑动滑块时,会执行该方法下的代码public void onStartTrackingTouch(SeekBar seekBar) {Toast.makeText(MainActivity.this,"我seekbar开始滑动了",Toast.LENGTH_SHORT).show();}@Override   //当结束滑动滑块时,会执行该方法下的代码public void onStopTrackingTouch(SeekBar seekBar) {Toast.makeText(MainActivity.this,"我seekbar结束滑动了",Toast.LENGTH_SHORT).show();}});}
}

最后实现效果:

四、自定义SeekBar

有时候系统的样式不好看,不足以满足开发美观需求,这个时候就需要自定义样式,使用xml资源文件进行样式的编辑。最后在布局文件中通过属性progressDrawable引用。
如果要实现非常复杂的样式就需要使用到View的自定义了,可以自己去了解学习下,自定义View可以实现几乎所有你想的到的样式。

下面放几个我觉得还挺好看的。

上图xml为:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background"><shape><corners android:radius="60dp" /><gradientandroid:angle="0"android:centerColor="#F39801"android:centerY="0.20"android:endColor="#F39801"android:startColor="#F39801" /></shape></item>
</layer-list>

上图xml为:

<?xml version="1.0" encoding="utf-8"?>
<layer-listxmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background"><shape><solid android:color="#22DDDD" /></shape></item><item android:id="@android:id/secondaryProgress"><clip><shape><solid android:color="#3CC4C4" /></shape></clip></item><item android:id="@android:id/progress"><clip><shape><solid android:color="#70CC33" /></shape></clip></item>
</layer-list>

上图xml为:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background"><shape><corners android:radius="5dp"/></shape><!--    背景颜色--><color android:color="#CCCCCC"/></item><item android:id="@android:id/progress"><clipandroid:clipOrientation="horizontal"android:gravity="left"><shape><corners android:radius="5dp"/><!--  开始颜色,中途颜色,最后颜色--><gradientandroid:startColor="#00FF00"android:centerColor="#FFFF00"android:endColor="#FF0000"/></shape></clip></item>
</layer-list>


通过thumb引用图片就可以自定义自己喜欢的图标了。

这里推荐一个很好用的矢量图标网站。iconfont-阿里巴巴矢量图标


今天的分享就到此为止了吧,加油。海绵宝宝!

Android之SeekBar的简单使用相关推荐

  1. android音乐进度条设计代码,【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等...

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...

  2. android studio seekbar 简单音乐播放器

    我这个seekbar比较简单,是访问自己放进raw文件里的音乐文件:通过Mediapaly实现后台播放. 用if语句判断图片实现切换歌曲,seekbar可以拖动歌曲进度,用 Duration=mp4. ...

  3. Android自定义Seekbar拖动条式样

    SeekBar拖动条可以由用户控制,进行拖动操作.比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现. 1.SeekBar控件的使用 1.1SeekBar常用属性 SeekBar的常用属性 ...

  4. Android使用SeekBar

    转自:http://my.oschina.net/pingdy/blog/376735 最近有做一个android项目,里面有使用到在播放视频时可以跳播,同时动态显示播放时间.类似于下图 的效果,我只 ...

  5. android 播放音乐卡顿,Android MediaPlayer+SeekBar播放音频出现卡顿边长可能问题

    开发过程中总是会碰到一些"什么鬼,原来这么简单"等等的问题,比如今天碰到 Android MediaPlayer+SeekBar播放音频出现卡顿可能问题? 代码段一: seekBa ...

  6. Android按钮滚动条,Android自定义Seekbar滑动条,Pop提示跟随滑动按钮一起滑动

    由于项目需要做出此效果,自定义写了一个. 效果图 思路: 原始的seekbar只有滑动条并没有下方的提示文字,所以我们必须要继承Seekbar重写这个控件. 代码: 在values文件夹下新建attr ...

  7. Android 使用SeekBar时动态显示进度且随SeekBar一起移动

    好久没有更新博客了!在滑动SeekBar的时候,要同时显示进度,而且通常要求最小值比0小,按照惯例,先看看效果图: 一.自定义控件 用于在SeekBar上方,跟随SeekBar一块移动的控件显示进度 ...

  8. android自定义seekbar,Android自定义SeekBar实现视频播放进度条

    本文实例为大家分享了Android实现视频播放进度条的具体代码,供大家参考,具体内容如下 首先来看一下效果图,如下所示: 其中进度条如下: 接下来说一说我的思路,上面的进度拖动条有自定义的Thumb, ...

  9. 关于SeekBar的简单介绍

    本篇博客主要讲解如何简单使用SeekBar(只是抛砖引玉,有什么错误的地方还请大神指出来),在查看源码的时候你会发现,seekbar其实是ProgressBar的子类,但是ProgressBar是不跟 ...

最新文章

  1. 在线作图|微生物多样性分析——稀释曲线
  2. rejection from Cambridge Machine Learning and Machine Intelligence MPhil
  3. 谷歌技术专家关于JavaScript的一个引人注目的观点
  4. 7-4 找到共同的选修课-hebust (10 分)
  5. 四种并发编程模型简介
  6. 计算机桌面打标签,在电脑桌面上添加便签的方法步骤详解(2)
  7. 图片照片展示html5模板
  8. 重新标注 ImageNet:多标签,全面提升模型性能
  9. 一文彻底搞懂线程安全问题
  10. python day 02
  11. ArcEngine中放大、缩小、移动等功能实现的方法
  12. AutoCAD字体安装教程
  13. MATLAB更改初始工作路径
  14. 家庭局域网_局域网IP不止192.168 了解这些实用又安全
  15. 使用Rosetta批量生成fasta
  16. 提升10%!如何将机器学习模型准确率从80%提高到90%以上
  17. HTML期末大作业~仿小米商城网页设计模板(HTML+CSS+JavaScript)
  18. 雨水情测报系统+智慧水库大坝安全监测系统
  19. 个人永久性免费-Excel催化剂功能第85波-灵活便捷的批量发送短信功能(使用腾讯云接口)...
  20. 蓝奏云(Lanzou网盘下载链接无法打开的解决方法

热门文章

  1. MongoDB安全基线
  2. FPT:又是借鉴Transformer!这次多方向融合特征金字塔 | ECCV 2020
  3. 如何安装和配置java环境,让电脑支持java运行
  4. 屏幕后处理故障艺术效果
  5. 【项目实战】Python实现基于LDA主题模型进行电商产品评论数据情感分析
  6. MD5数字签名算法:生成签名和验签(附代码)
  7. android11小米,小米10安卓11Magisk+Edxposed教程--岁月博客提供
  8. Bibox期货交易所评测简报 | TokenInsight
  9. MADlib——基于SQL的数据挖掘解决方案(4)——数据类型之矩阵
  10. 平面设计/网页美工网络素材摘录