一、介绍:java
SeekBar:听歌的时候,咱们经常喜欢快进或者快退去听本身喜欢的片断;喜欢控制音量到温馨的大小。SeekBar能够经过滑块的位置来标识数值,并且拖动条容许用户拖动滑块来改变进度值的大小。android
二、SeekBar的主要属性和方法:app
setMax 设置SeekBar的最大值ide
setProgress 设置SeekBar当前的数值.net
setSecondaryProgress 设置SeekBar的第二数值,即当前拖动条推荐的数值code
三、SeekBar的事件:xml
因为拖动条能够被用户控制。因此须要对其进行事件监听,这就须要实现SeekBar.OnSeekBarChangeListener接口。此接口共须要监听三个事件:blog
数值变更:(onProgressChanged)接口
开始拖动:(onStartTrackingTouch)事件
中止拖动:(onStopTrackingTouch)
四、自定义SeekBar进度条:
android:progressDrawable="@drawable/seekbar_img" 改变进度条的样式
android:thumb="@drawable/thumb" 改变滑块的样式
具体修改方式和个人另外一篇博文http://my.oschina.net/CoderBleak/blog/718751中改变ProgressBar的方式相同,这里不做具体阐述,能够参考上述连接。
若是遇到样式文件按Ctrl+鼠标左键打不开,那么咱们能够在下载的adt的源码中去查看。
五、应用:
MainActivity.java文件
package com.example.myandroidseekbar; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; //2.一、实现接口OnSeekBarChangeListener,实现未实现的方法 public class MainActivity extends Activity implements OnSeekBarChangeListener{ //第一步、设置SeekBar变量 //1.一、声明SeekBar变量 private SeekBar seekBar; //3.二、声明TextView private TextView tv1; private TextView tv2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1.二、初始化seekBar seekBar=(SeekBar) findViewById(R.id.seekBar); //3.二、绑定textView tv1=(TextView) findViewById(R.id.tv1); tv2=(TextView) findViewById(R.id.tv2); //第二步、设置监听器监听用户手指拖动改变的状况 //第三步、修改activity_main.xml文件,设置textView去代表当前seekBar的状态 //第四步、自定义SeekBar进度条 } //2.二、实现未实现的方法 //数值改变时会调用 @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub //3.三、设置下面的textView在数值改变的时候显示当前的数值 tv1.setText("正在拖动"); tv2.setText("当前数值:"+progress); } //开始拖动时会调用 @Override public void onStartTrackingTouch(SeekBar arg0) { // TODO Auto-generated method stub tv1.setText("开始拖动"); } //中止拖动会调用 @Override public void onStopTrackingTouch(SeekBar arg0) { // TODO Auto-generated method stub tv1.setText("中止拖动"); } }
activity_main.xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/seekBar" android:max="100" android:progress="50"/> <!--3.一、修改activity_main.xml文件,设置textView去代表当前seekBar的状态 --> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv1" android:layout_below="@+id/seekBar" /> <TextView android:id="@+id/tv2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/tv1" /> </RelativeLayout>
效果: