一、SeekBar的用处
SeekBar是ProgressBar的扩展,是一个可以拖动的进度条,这样用户就可以通过拖动控制条来改变进度,就好像我们听音乐、看电影的前进与后退就是通过它来实现的。
二、SeekBar的使用
如果我们想要实现对拖动的控制,就需要对该事件进行监听,Android系统提供了一个监听接口SeekBar.OnSeekBarChangeListener,要实现它的监听功能只要实现其接口即可。
在SeekBar中我们需要监听的主要有如下三个事件
数值的改变(onProgressChanged):进度发生改变时调用
开始拖动(onStartTrackingTouch):开始拖动的时候调用
停止拖动(onStopTrackingTouch):停止拖动的时候调用
了解了SeekBar的调用,我们来看下它的相关属性。
android:max ( 设置值的大小 )
android:thumb=”@drawable/” ( 显示的那个可拖动图标,如果没有设置该参数则为系统默认,如果自己需要重新定义,则将自己需要的图标存放在资源目录 /res/drawable下,然后调用即可)
android:thumbOffset (拖动图标的偏量值,可以让拖动图标超过bar的长度)
android:progress ( 设置seekbar当前进度条的默认值,范围0到max之间)
android:secondaryProgress (拖动图标随着当前的播放时间的走动而走动,同时我们也注意到了也有个缓冲看到的进度条,这个属性就是用来设置默认显示的值为多少,范围为0到max)
android:progressDrawable(用于自己定义SeekBar)
三、应用实例
布局:
<LinearLayout 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"
tools:context=".MainActivity"
android:orientation="vertical">
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="30"
/>
<TextView
android:id="@+id/tvdata"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/tvstate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
MainActivity:
package com.example.myseekbar;
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;
public class MainActivity extends Activity implements OnSeekBarChangeListener{
private SeekBar mseekbar;
private TextView mtvdata;
private TextView mtvstate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mseekbar=(SeekBar) findViewById(R.id.seekbar);
mtvdata=(TextView) findViewById(R.id.tvdata);
mtvstate=(TextView) findViewById(R.id.tvstate);
//监听器
mseekbar.setOnSeekBarChangeListener(this);
}
//开始创建时调用
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
mtvstate.setText("开始拖动");
mtvdata.setText("当前进度数值是:"+progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
mtvstate.setText("开始拖动");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
mtvstate.setText("停止拖动");
}
}