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

这篇具有很好参考价值的文章主要介绍了Android 基础知识4-3.8 SeekBar(拖动条)详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

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时触发

 三、简单的代码示例

效果图:

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

Activity:

public class MainActivity extends AppCompatActivity {

    private SeekBar sb_normal;
    private TextView txt_cur;
    private Context mContext;

    @Override
    protected 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() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                txt_cur.setText("当前进度值:" + progress + "  / 100 ");
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                Toast.makeText(mContext, "触碰SeekBar", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                Toast.makeText(mContext, "放开SeekBar", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

四、简单SeekBar定制

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

Android 基础知识4-3.8 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>

图标:

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

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

(2)、条形栏Bar的Drawable:sb_bar.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>
            <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即可!文章来源地址https://www.toymoban.com/news/detail-481907.html

<SeekBar
        android: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(拖动条)详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 基础知识4-2.10 GridLayout(网格布局)详解

    一、GridLayout(网格布局)概述         GridLayout 布局是 Android 4.0 以后引入的新布局,和 TableLayout(表格布局) 有点类似,不过它功能更多,也更加好用,最大的特点是放置的组件自动占据网格的整个区域,每个组件的 大小相同 , 不能改变组件大小 ,只能改变组件之间的水平

    2024年02月16日
    浏览(37)
  • Android Framework基础知识

    哈喽大家好,我是Zzz. 给大家分享一篇Framework入门的基础知识文章,内容纯纯原创。 一、Application,Activity和进程的关系?     Application、Activity只是进程虚拟机运行的一个类对象,只是属于系统的一个组件和进程没有直接联系。Android支持为每个组件可以单独进程方式运行。

    2024年03月24日
    浏览(40)
  • [Android]JNI的基础知识

    目录 1.什么是JNI   2.配置JNI开发环境NDK 3.创建Native C++类型的项目 4. 了解CMakeLists.txt 文件 5.了解native-lib.cpp 文件 6.在 Android 的 MainActivity 中调用 native-lib.cpp 中实现的本地方法 1.什么是JNI         JNI(Java Native Interface)是一种允许Java代码与本地代码(如C或C++)进行交互的技

    2024年02月11日
    浏览(49)
  • Android ContentProvider基础知识学习笔记

    1、动态申请权限 2、读取手机联系人 3、创建自己的ContentProvider (1) onCreate()。初始化ContentProvider的时候调用。通常会在这里完成对数据库的创建和升级等操作,返回true表示ContentProvider初始化成功,返回false则表示失败。 (2) query()。从ContentProvider中查询数据。uri参数用于确定查

    2024年04月10日
    浏览(45)
  • Android开发Java版 —— 基础知识

    📝 “第一行代码” 第二版 (java)读书笔记 源码下载地址:github仓库地址。 Android大致可以分为 四层架构 : Linux 内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动 系统运行库层 这一层通过一些C/C++库来为Android系统提供了主要的特性支持

    2024年02月06日
    浏览(57)
  • Android Studio开发基础知识(持续更新中~)

    阅读本文需要有 Java 和 前端 的基础,本文是我学习Android时的笔记。 Info Key 复制行 Ctrl + D 删除行 Ctrl + Y 注释 Ctrl + / 注释2 Ctrl + Shift + / 撤销 Ctrl + Z 恢复 Ctrl + Shift + Z 显示结构 Ctrl + F12 格式化代码 Ctrl + Alt + L 打开设置 Ctrl + Alt + S 自动补全代码 Ctrl + Shift + Space 自动导包 Alt +

    2023年04月08日
    浏览(50)
  • Android中集成FFmpeg及NDK基础知识

    在日常App开发中,难免有些功能是需要借助NDK来完成的,比如现在常见的音视频处理等,今天就以ffmpeg入手,来学习下Android NDK开发的套路. 很多人并不清除JNI和NDK的概念,经常搞混这两样东西,先来看看它们各自的定义吧. 很多人并不清除JNI和NDK的概念,经常搞混这两样东西,先来看看

    2024年01月17日
    浏览(39)
  • 【Linux系统基础快速入门详解】SSH远程连接必备网络基础知识详解

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) SSH(Secure Shell)是一种网络协议,用于通过加密的方式在不安全的网络上安全地进行远程连接和数据传输。下面是对SSH远程连接的必备

    2024年02月07日
    浏览(68)
  • 鸿蒙:Harmony开发基础知识详解

    工欲善其事,必先利其器。 上一篇博文实现了一个 \\\"Hello Harmony\\\" 的Demo,今天这篇博文就以 \\\"Hello Harmony\\\"  为例,以官网开发文档为依据,从鸿蒙开发主要的几个方面入手,详细了解一下鸿蒙开发所需的基础知识。 HarmonyOS提供了一套UI开发框架,即 方舟开发框架 ( ArkUI框架 )

    2024年02月05日
    浏览(53)
  • 【C++】入门基础知识详解(二)

    目录 一、内联函数 1、概念 2、特性 3、内联函数与宏的优缺点 二、auto(C++11)   1、auto 简介   2、auto的使用细则     2.1 auto与指针和引用结合起来使用     2.2 在同一行定义多个变量   3、auto不能推导的场景     3.1 auto 不能作为函数的参数     3.2 auto 不能直接用来声

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包