Android 基础知识4-3.8 SeekBar(拖动条)详解
一、简介
拖动条类似进度条,不同的是用户可以控制,比如,应用程序中用户可以对音效进行控制,这就可以使用拖动条来实现。由于拖动条可以被用户控制,所以需要对其进行事件监听,这就需要实现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(拖动条)详解相关推荐
- Android 基础知识4-3.6 ToggleButton(开关按钮)Switch(开关)详解
一.ToggleButton(开关按钮) 1.1.简介 ToggleButton 类似开关有开和关两种状态,不同的状态下可以有不同的文本. public class ToggleBut ...
- Android基础入门教程——8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash
Android基础入门教程--8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash 标签(空格分隔): Android基础入门教程 本节引言: 在Canva ...
- Android基础入门教程——2.5.3 AlertDialog(对话框)详解
Android基础入门教程--2.5.3 AlertDialog(对话框)详解 标签(空格分隔): Android基础入门教程 本节引言: 本节继续给大家带来是显示提示信息的第三个控件AlertDia ...
- Android学习笔记18:自定义Seekbar拖动条式样
SeekBar拖动条可以由用户控制,进行拖动操作.比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现. 1.SeekBar控件的使用 1.1SeekBar常用属性 SeekBar的常用属性 ...
- FPGA基础知识极简教程(7)详解亚稳态与跨时钟域传输
博文目录 写在前面 正文 FPGA或ASIC中的传播延迟 建立和保持时间是什么? 建立和保持时间与传播延迟和时钟频率有何关系? 如果违反建立和保持时间会发生什么? FPGA中的亚稳定是什么? 亚稳态何 ...
- FPGA基础知识极简教程(8)详解三态缓冲器
博文目录 写在前面 正文 全双工与半双工 FPGA和ASIC中的三态缓冲器 如何在VHDL和Verilog中推断出三态缓冲区 参考资料 交个朋友 写在前面 下面用举例子的方式引出三态门,内容过长,大家 ...
- bootice 此功能仅在uefi环境下可用_电脑新手必掌握基础知识:BIOS、EFI与UEFI详解!...
本文估计很多小白看不懂,但是还是建议你硬着头皮看完,这篇文章主要讲解了这几种"BIOS"的启动方式,对电脑启动问题判断的理解会有益处. BIOS是个程序,存储在BIOS芯片中,而现 ...
- 五、操作系统——内存相关基础知识 和 进程运行的基本原理(详解)
一.概述 二.什么是内存?有何作用? 内存是用于存放数据的硬件.程序在执行之前,需要先放到内存中才能被CPU处理. 平时,我们各种各样的软件都是存储在外存(辅存)里.电脑的话,一般是存储在硬盘里,但是 ...
- iif能用到mysql中吗_数据库基础知识:SQL中的IIF语句详解
IIf 返回由逻辑测试确定的两个数值或字符串值之一. 语法 数字 IIf(Logical EXPression, Numeric Expression1, Numeric Expression2) 如 ...
- 安全基础知识 最强0到33600端口详解(5)
导读: 端口:1024 服务:Reserved 说明:它是动态端口的开始,许多程序并不在乎用哪个端口连接网络,它们请求系统为它们分配下一个闲置端口.基于这一点分配从端口1024开始.这就是说 第一个向 ...
最新文章
- 数组对称_对称性应用在物理中的几个小例子
- 阿里云centos配置nginx和nodejs
- 【插件】IDEA中个人觉得最好的插件,附简单使用方法(持续更新)
- android 中的aidl
- gdi 格式转换 vb_VB 程序设计举例
- MySQL高可用的几种方案
- 新手算法学习之路----二分法Last-position-of-Target
- 二叉树为空意味着二叉树_我是怎么调试出来二叉树的遍历(超精彩配图),从此遍历不再愁了...
- CentOS下安装JDK完整步骤
- 可视化_数据可视化—地图可视化
- .NET 使用 Google 验证码(Google reCAPTCHA)
- origin柱状图同时有两组数和两组数差值_简单搞定四元数
- html div与span同行,div和span在一行 div和Span及a标签的区别
- Android Studio 连接手机
- 【美影】通灵男孩诺曼.Paranorman
- 32位系统为什么又叫x86系统呢?
- COGS 2211. [BZOJ3653]谈笑风生
- HR在线揭秘:面试总被虐?这 12 个必问题请记好答案!
- arduino 红外遥控小车
- [U盘] 如何恢复U盘容量