当前位置: 首页 > news >正文

android学习SeekBar的使用

  

SeekBar介绍
听歌的时候,我们常常想快进或者快退到某一时间段,听歌的时候我们控制音量大小听歌,SeekBar可以通过滑块的位置来标示数值,
而且拖动条允许用户拖动滑块来改变进度条的大小

SeekBar的主要属性和方法
(1)setMax --- 设置SeekBar的最大数值
(2)setProgress --- 设置SeekBar的当前数值
(3)setSecondProgress---设置SeekBar的第二数值

即当前拖动条的推荐位置
SeekBar的事件
由于拖动条可以诶用户控制。所以需要对其事件监听,这就需要实现SeekBar.OnSeekBarChangeListner接口,此接口共需监听
三个事件分别是:
数值改变----onProgressChanged
开始拖动----onStartTrackingTouch
停止拖动----onStopTrackingTouch

1,布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/seekBar"
        android:max="100"
        android:progress="50"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView2" />
</LinearLayout>

  2,MainActivity

public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener{

    private SeekBar seekBar;
    private TextView tv1;
    private TextView tv2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        seekBar = (SeekBar)findViewById(R.id.seekBar);
        seekBar.setOnSeekBarChangeListener(this);
        tv1 = (TextView)findViewById(R.id.textView);
        tv2 = (TextView)findViewById(R.id.textView2);

    }
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        tv2.setText(progress+"");
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        tv1.setText("开始拖动");
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        tv1.setText("停止拖动");
    }
}
自定义SeekBar的进度条
改变进度条的样式
android:ProgressDrawable = “@drawable/seekBar_img”
改变滑块的样式
android:thumb = @drawable/thumb
  3,改变滑块的样式
  和ProgressBar 一样,我们需要进入SeekBar 的样式文件看一看
 <style name="Widget.SeekBar">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
        <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
        <item name="android:minHeight">20dip</item>
        <item name="android:maxHeight">20dip</item>
        <item name="android:thumb">@android:drawable/seek_thumb</item>
        <item name="android:thumbOffset">8dip</item>
        <item name="android:focusable">true</item>
        <item name="android:mirrorForRtl">true</item>
    </style>

    我们可以看到他的滑块是这个样式@android:drawable/seek_thumb,继续我们可以在\data\res\drawable下找到seek_thumb.xml这个文件,他就是滑块的样式

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_pressed" />

    <item android:state_focused="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:state_selected="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:drawable="@drawable/seek_thumb_normal" />

</selector>

  可以看到他是一个选择器,这样,我们想要改变滑块的样式,只需要修改这个选择器即可。

  在drawable下放置两种滑块图片

  my_thumb.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/select" android:state_pressed="true" android:state_window_focused="true"/>
    <item android:drawable="@drawable/select" android:state_focused="true" android:state_window_focused="true"/>
    <item android:drawable="@drawable/select" android:state_selected="true" android:state_window_focused="true"/>
    <item android:drawable="@drawable/normal"/>

</selector>

  更改SeekBar的thumb属性

 <SeekBar
        android:thumb="@drawable/my_thumb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/seekBar"
        android:max="100"
        android:progress="50"/>
就可以看到我们想要的滑块效果了。
 

转载于:https://www.cnblogs.com/techdreaming/p/5005715.html

相关文章:

  • 2010年走到转折点的IT人:他们被迫改变
  • 如何消除inline-block元素间间距问题(转)
  • 经典算法研究系列:一、A*搜索算法
  • 基于Objectvie-C基础教程(第2版)做的笔记
  • S3C2440-LCD图片显示
  • 1203有穷自动机
  • eclipse 导入tomcat7源码
  • 硬件黑客
  • Python生成器实现杨辉三角打印
  • jQuery获取表格第一列的值
  • linux 安装mysql
  • 100个vc小项目开发:二、一步一点设计音乐播放器 [I]
  • 升级Windows10后Apache服务器启动失败的解决方法
  • 记2个月来,我在Csdn 掀起的微软面试风暴
  • Bootstrap显示代码的三种效果
  • JS 中的深拷贝与浅拷贝
  • co模块的前端实现
  • CSS3 变换
  • laravel5.5 视图共享数据
  • 多线程 start 和 run 方法到底有什么区别?
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 扑朔迷离的属性和特性【彻底弄清】
  • 深入浏览器事件循环的本质
  • 通过git安装npm私有模块
  • 原生 js 实现移动端 Touch 滑动反弹
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 白色的风信子
  • 积累各种好的链接
  • # .NET Framework中使用命名管道进行进程间通信
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (二)丶RabbitMQ的六大核心
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (三) diretfbrc详解
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net core 6 redis操作类
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C# 使用反射注册事件
  • .netcore如何运行环境安装到Linux服务器
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET学习全景图
  • .project文件
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • @拔赤:Web前端开发十日谈
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [C++]高精度 bign (重载运算符版本)
  • [CISCN2019 华东南赛区]Web11
  • [C进阶] 数据在内存中的存储——浮点型篇