一、简介

拖动条类似进度条,不同的是用户可以控制,比如,应用程序中用户可以对音效进行控制,这就可以使用拖动条来实现。由于拖动条可以被用户控制,所以需要对其进行事件监听,这就需要实现SeekBar.onSeekBarChangeListener接口。在SeekBar中共需要监听3个事件,分别是:数值的改变(onProgressChanged)、开始拖动(onStartTrackingTouch)、停止拖动(onStopTrackingTouch)。在onProgressChanged中我们可以得到当前数值的大小。

二、常用属性和方法

seekBar继承了ProgressBar,ProgressBar所支持的xml属性和方法都适用于seekBar

属性值 含义
max 设置该进度条的最大值
progress 设置该进度条的已完成进度值
progressDrawable 自定义drawable显示
secondaryProgress 定义二级进度值,值介于0到max。该进度在主进度和背景之间。比如用于网络播放视频时,二级进度用于表示缓冲进度,主进度用于表示播放进度。
thumb 设置进度条的滑块图片
splitTrack 滑块底部 背景样式 (false为透明 )

android:max="100" //滑动条的最大值

android:progress="60" //滑动条的当前值

android:secondaryProgress="70" //二级滑动条的进度

android:thumb = "@mipmap/sb_icon" //滑块的drawable

接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener 我们只需重写三个对应的方法:

onProgressChanged:进度发生改变时会触发

onStartTrackingTouch:按住SeekBar时会触发

onStopTrackingTouch:放开SeekBar时触发

三、简单的代码示例

效果图:

Activity:

public class MainActivity extends AppCompatActivity {private SeekBar sb_normal;private TextView txt_cur;private Context mContext;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = MainActivity.this;bindViews();}private void bindViews() {sb_normal = (SeekBar) findViewById(R.id.sb_normal);txt_cur = (TextView) findViewById(R.id.txt_cur);sb_normal.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {txt_cur.setText("当前进度值:" + progress + "  / 100 ");}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {Toast.makeText(mContext, "触碰SeekBar", Toast.LENGTH_SHORT).show();}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {Toast.makeText(mContext, "放开SeekBar", Toast.LENGTH_SHORT).show();}});}
}

四、简单SeekBar定制

本来还想着自定义下SeekBar的,后来想想,还是算了,涉及到自定义View的一些东西,可能初学者并 不了解,看起来也有点难度,关于自定义View的还是放到进阶那里吧,所以这里就只是简单的定制下SeekBar。

代码实现:

(1)、滑块状态Drawable:sb_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true" android:drawable="@mipmap/seekbar_thumb_pressed"/><item android:state_pressed="false" android:drawable="@mipmap/seekbar_thumb_normal"/>
</selector>

图标:

(2)、条形栏Bar的Drawable:sb_bar.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="#FFFFD042" /></shape></item><item android:id="@android:id/secondaryProgress"><clip><shape><solid android:color="#FFFFFFFF" /></shape></clip></item><item android:id="@android:id/progress"><clip><shape><solid android:color="#FF96E85D" /></shape></clip></item>
</layer-list>

(3)、然后布局引入SeekBar后,设置下progressDrawable与thumb即可!

<SeekBarandroid:id="@+id/sb_normal"android:layout_width="match_parent"android:layout_height="wrap_content"android:maxHeight="5.0dp"android:minHeight="5.0dp" android:progressDrawable="@drawable/sb_bar"android:thumb="@drawable/sb_thumb"/>

Android 基础知识4-3.8 SeekBar(拖动条)详解相关推荐

  1. Android 基础知识4-3.6 ToggleButton(开关按钮)Switch(开关)详解

    一.ToggleButton(开关按钮) 1.1.简介 ToggleButton 类似开关有开和关两种状态,不同的状态下可以有不同的文本.         public class ToggleBut ...

  2. Android基础入门教程——8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash

    Android基础入门教程--8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash 标签(空格分隔): Android基础入门教程 本节引言: 在Canva ...

  3. Android基础入门教程——2.5.3 AlertDialog(对话框)详解

    Android基础入门教程--2.5.3 AlertDialog(对话框)详解 标签(空格分隔): Android基础入门教程 本节引言: 本节继续给大家带来是显示提示信息的第三个控件AlertDia ...

  4. Android学习笔记18:自定义Seekbar拖动条式样

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

  5. FPGA基础知识极简教程(7)详解亚稳态与跨时钟域传输

    博文目录 写在前面 正文 FPGA或ASIC中的传播延迟 建立和保持时间是什么? 建立和保持时间与传播延迟和时钟频率有何关系? 如果违反建立和保持时间会发生什么? FPGA中的亚稳定是什么? 亚稳态何 ...

  6. FPGA基础知识极简教程(8)详解三态缓冲器

    博文目录 写在前面 正文 全双工与半双工 FPGA和ASIC中的三态缓冲器 如何在VHDL和Verilog中推断出三态缓冲区 参考资料 交个朋友 写在前面 下面用举例子的方式引出三态门,内容过长,大家 ...

  7. bootice 此功能仅在uefi环境下可用_电脑新手必掌握基础知识:BIOS、EFI与UEFI详解!...

    本文估计很多小白看不懂,但是还是建议你硬着头皮看完,这篇文章主要讲解了这几种"BIOS"的启动方式,对电脑启动问题判断的理解会有益处. BIOS是个程序,存储在BIOS芯片中,而现 ...

  8. 五、操作系统——内存相关基础知识 和 进程运行的基本原理(详解)

    一.概述 二.什么是内存?有何作用? 内存是用于存放数据的硬件.程序在执行之前,需要先放到内存中才能被CPU处理. 平时,我们各种各样的软件都是存储在外存(辅存)里.电脑的话,一般是存储在硬盘里,但是 ...

  9. iif能用到mysql中吗_数据库基础知识:SQL中的IIF语句详解

    IIf 返回由逻辑测试确定的两个数值或字符串值之一. 语法 数字 IIf(Logical EXPression, Numeric Expression1, Numeric Expression2) 如 ...

  10. 安全基础知识 最强0到33600端口详解(5)

    导读: 端口:1024 服务:Reserved 说明:它是动态端口的开始,许多程序并不在乎用哪个端口连接网络,它们请求系统为它们分配下一个闲置端口.基于这一点分配从端口1024开始.这就是说 第一个向 ...

最新文章

  1. 数组对称_对称性应用在物理中的几个小例子
  2. 阿里云centos配置nginx和nodejs
  3. 【插件】IDEA中个人觉得最好的插件,附简单使用方法(持续更新)
  4. android 中的aidl
  5. gdi 格式转换 vb_VB 程序设计举例
  6. MySQL高可用的几种方案
  7. 新手算法学习之路----二分法Last-position-of-Target
  8. 二叉树为空意味着二叉树_我是怎么调试出来二叉树的遍历(超精彩配图),从此遍历不再愁了...
  9. CentOS下安装JDK完整步骤
  10. 可视化_数据可视化—地图可视化
  11. .NET 使用 Google 验证码(Google reCAPTCHA)
  12. origin柱状图同时有两组数和两组数差值_简单搞定四元数
  13. html div与span同行,div和span在一行 div和Span及a标签的区别
  14. Android Studio 连接手机
  15. 【美影】通灵男孩诺曼.Paranorman
  16. 32位系统为什么又叫x86系统呢?
  17. COGS 2211. [BZOJ3653]谈笑风生
  18. HR在线揭秘:面试总被虐?这 12 个必问题请记好答案!
  19. arduino 红外遥控小车
  20. [U盘] 如何恢复U盘容量

热门文章

  1. 什么是API,开发人员该如何使用它们?
  2. 【嵌入式项目开源】基于ESP32的墨水屏桌面小屏幕
  3. Android两个canvas混合叠加,Android Canvas设置绘画时重叠部分的处理模式【含效果图】...
  4. Navicat 12 for MySQL激活方法(注册机)
  5. 电脑录屏软件哪个好用,分享4款不限时长的录屏软件
  6. Linux系统常用基本命令总结
  7. GICv3软件overview手册之GICv4对虚拟LPI的直接注入(2)
  8. 非常棒的数据结构与算法视频
  9. (平衡)kd树的创建与搜索
  10. 字符串匹配 (KMP)