SeekBar拖动条可以由用户控制,进行拖动操作。比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现。

1.SeekBar控件的使用

1.1SeekBar常用属性

  SeekBar的常用属性有以下一些:

android:max[integer]//设置拖动条的最大值

android:progress[integer]//设置当前的进度值

android:secondaryProgress[integer]//设置第二进度,通常用做显示视频等的缓冲效果

android:thumb[drawable]//设置滑块的图样

android:progressDrawable[drawable]//设置进度条的图样

1.2SeekBar事件监听器

  在使用SeekBar时,我们可以通过设置事件监听器setOnSeekBarChangeListener来获取SeekBar的当前状态。在SeekBar中通常需要监听以下3个事件:

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser);

public void onStartTrackingTouch(SeekBar seekBar);

public void onStopTrackingTouch(SeekBar seekBar);

  其中,onProgressChanged()用于监听SeekBar进度值的改变;onStartTrackingTouch()用于监听SeekBar开始拖动;onStopTrackingTouch()用于监听SeekBar停止拖动。

1.3实例

  在本实例中,实现了一个简单的SeekBar案例,设置了拖动条的最大值为100,当前进度值为30,第二进度为50。设置了SeekBar的事件监听器,对SeekBar进度值的改变、SeekBar开始拖动、SeekBar停止拖动进行了监听,并将结果分别显示在两个TextView控件中。

  在xml布局文件中,实现了对一个SeekBar控件和两个TextView控件的布局设置,具体源代码如下:

xml布局文件

 

xml布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent" ><SeekBarandroid:id="@+id/seekbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:max="100"android:progress="30"android:secondaryProgress="50">        </SeekBar><TextViewandroid:id="@+id/textview1"android:layout_width="match_parent"android:layout_height="wrap_content"    >        </TextView><TextViewandroid:id="@+id/textview2"android:layout_width="match_parent"android:layout_height="wrap_content"    >        </TextView></LinearLayout>

 在java代码中,实现了对SeekBar进度值的改变、SeekBar开始拖动、SeekBar停止拖动的监听,具体源代码如下:

java代码

 

java代码package com.example.android_seekbar;import android.os.Bundle;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;import android.app.Activity;public class MainActivity extends Activity implements OnSeekBarChangeListener {SeekBar mSeekBar;                      //SeekBar对象,用于显示进度条TextView mTextView1;               //TextView对象,用于显示当前进度值TextView mTextView2;               //TextView对象,用于显示拖动状态
     @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);                          //加载布局文件//加载控件mSeekBar = (SeekBar)this.findViewById(R.id.seekbar);mTextView1 = (TextView)this.findViewById(R.id.textview1);mTextView2 = (TextView)this.findViewById(R.id.textview2);mSeekBar.setOnSeekBarChangeListener(this);          //设置SeekBar的监听器
     }//进度值改变事件监听public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {mTextView1.setText("当前值:" + progress);}//开始拖动事件监听public void onStartTrackingTouch(SeekBar seekBar) {mTextView2.setText("正在调节");}//停止拖动事件监听public void onStopTrackingTouch(SeekBar seekBar) {mTextView2.setText("停止调节");}}

 实例运行后的效果如图1所示。

图1 Seekbar效果图

2.自定义SeekBar式样

  Android提供的默认SeekBar式样很单一,并不能完全满足开发的需要,如何来定制自己的SeekBar式样呢?

  不难看出,一个SeekBar是由滑块和滑竿两部分组成的。所以,要实现自定义的SeekBar式样,只需要分别实现自定义的滑块和滑竿就可以了。

2.1自定义滑块的实现

  通过观察可以看出,滑块有两种状态:押下状态和未押下状态。当押下滑块时,滑块为高亮显示状态;当未押下滑块时,滑块为置灰状态。

  所以,在我们自定义的Seekbar中,可以使用两张图片来分别表示滑块的押下和未押下状态。具体可以在工程的res/drawable目录下新建thumb.xml文件,来加载这两种张图片,并通过设置android:state_pressed属性来选择显示哪张图片。

  具体的thumb.xml源代码如下:

thumb.xml源代码
thumb.xml源代码<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><!--  滑块未压下时 --><itemandroid:state_pressed="false"android:drawable="@drawable/thumb_grey"    >      </item><!-- 滑块压下时 --><itemandroid:state_pressed="true"android:drawable="@drawable/thumb_green"    >      </item></selector>

2.2自定义滑竿的实现

  要实现自定义的滑竿式样,可以通过设置滑竿背景、进度条式样以及第二进度条式样来实现。具体可以在工程的res/drawable目录下新建seekbarbackground.xml文件,并通过设置android:drawable属性来加载三张图片分别表示滑竿背景、进度条式样以及第二进度条式样。

  具体的seekbarbackground.xml源代码如下:

seekbarbackground.xml源代码
seekbarbackground.xml源代码<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"><!-- 滑竿背景 --><itemandroid:id="@android:id/background"android:drawable="@drawable/seekbar_background"    >     </item><!-- 第二进度条式样 --><itemandroid:id="@android:id/secondaryProgress"    android:drawable="@drawable/seekbar_secondaryprogress"    >  </item><!-- 进度条式样 --><itemandroid:id="@android:id/progress"android:drawable="@drawable/seekbar_progress"    >  </item></layer-list>

2.3自定义SeekBar式样的效果

  定义好了自己的滑块和滑竿式样之后,就可以在main.xml文件中加载自己定义的滑块和滑竿式样了。加载方法如下:

android:thumb="@drawable/thumb"

android:progressDrawable="@drawable/seekbarbackground"

  运行后就可以看到自己定义的Seekbar式样了,如图2和图3所示。其中,图2是滑块未押下时的Seekbar式样,图3是滑块押下并滑动时的Seekbar式样。

图2 自定义SeekBar效果图1

图3 自定义SeekBar效果图2

转载于:https://www.cnblogs.com/britalient/p/3173187.html

Android学习笔记18-自定义Seekbar拖动条式样相关推荐

  1. 自定义Seekbar拖动条式样

    Android学习笔记:自定义Seekbar拖动条式样 SeekBar拖动条可以由用户控制,进行拖动操作.比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现. 1.SeekBar控件的使用 ...

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

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

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

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

  4. Android学习笔记之自定义Toast

    1)布局文件layout [html] view plaincopy <RelativeLayout xmlns:android="http://schemas.android.com ...

  5. [Android学习笔记四] 自定义Android组件之组合方式创建密码框组件

    Android中所有控件(也称组件)都继承自adnroid.view.View类,android.view.ViewGroup是View类的重要子类,绝大多书的布局类就继承自ViewGroup类. 参 ...

  6. android学习笔记---62_自定义窗口标题

    2013/5/26 Java技术qq交流群:JavaDream:251572072 62_自定义窗口标题 --------------------------- 下面是一个案例,用来介绍62_自定义窗 ...

  7. Android学习笔记(18)————利用tts开发一个android发音字典

    /******************************************************************************************** * auth ...

  8. android学习笔记---66_自定义标签页

    2013/7/17 66_自定义标签页 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:___________以前的网站现在不弄了,抱歉 smdl2tmp1. ...

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

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

最新文章

  1. Error in bl_make_text_box(token, drawing_context$gp, drawing_context$yoff_pt) : function ‘Rcpp_preci
  2. delphi 中怎么知道某一个月有多少天
  3. 【Tiny4412】设置Uboot提示符和关闭MMU
  4. windos oracle创建sid,window下改oracle_sid | 学步园
  5. 注册中心—常见注册中心组件对比分析
  6. opengl如何画出一个球_OpenGL-Controlling and Monitoring the Pipeline
  7. 用JQuery中的Ajax方法获取web service等后台程序中的方法
  8. POJ 1163 The Triangle
  9. webstorm js没有代码提示
  10. pdf在线预览功能的两种方法
  11. 机器阅读理解任务综述
  12. GEEM2引擎微端架设基本教程
  13. ENVI中的3种图像分类方法
  14. 利用zxing生成二维码
  15. 30 个纯 HTML5 实现的游戏
  16. 过年烟花特效+鼠标滑过+樱花特效
  17. 实战案例 :电信客户流失分析与预测
  18. 1小时、1天、1个月、一年的时间戳
  19. 简析令人头大的定义 void (*(*f[])())()
  20. 空调器制冷系统故障-冷凝器脏堵

热门文章

  1. 第八章 工厂方法模式
  2. java之ibatis数据缓存
  3. dataTables-使用详细说明整理
  4. Linux各发行版流行度统计数据与排名
  5. 5G NR — 基于 GPS 的时间同步
  6. Openstack组件部署 — Networking service_Compute Node
  7. Linux_系统时间管理
  8. NanoPi NEO Air使用九:使用Linux内核自带的LED驱动
  9. CS8900A网络驱动程序移植
  10. 韦东山u-boot、kernel打补丁操作