SeekBar widget
last modified November 5, 2012
In this chapter of the Android development tutorial we will present the SeekBar widget.
The SeekBar
widget is used to select a value from a range of values.
The user drags a thumb of the widget to select a specific value.
To process the SeekBar
events, we implement the
SeekBar.OnSeekBarChangeListener
listener.
SeekBar example
We have a SeekBar
widget and a TextView
widget. The current value from
the SeekBar
is displayed in the TextView
. Android manifest file is
left untouched.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <SeekBar android:id="@+id/sbId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:max="100" android:progress="50" /> <TextView android:id="@+id/tvId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" /> </LinearLayout>
In the main.xml
layout file, we have two widgets defined. The SeekBar
widget and the TextView widget.
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">SeekBar</string> <string name="init_tv_value">50</string> </resources>
This is strings.xml
resource file. The init_tv_value
is the
initial value of the TextView
widget.
package com.zetcode.seekbar; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class MainActivity extends Activity implements OnSeekBarChangeListener { TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); SeekBar sb = (SeekBar) findViewById(R.id.sbId); sb.setOnSeekBarChangeListener(this); tv = (TextView) findViewById(R.id.tvId); String val = this.getString(R.string.init_tv_value); tv.setText(val); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { tv.setText(String.valueOf(progress)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // not implemented } @Override public void onStopTrackingTouch(SeekBar seekBar) { // not implemented } }
The current value from the SeekBar
is set to the TextView
widget.
public class MainActivity extends Activity implements OnSeekBarChangeListener
The MainActivity
class implements the OnSeekBarChangeListener
.
We need to define three abstract methods. The onProgressChanged()
,
the onStartTrackingTouch()
and the onStopTrackingTouch()
method.
The last two methods are not implemented. They are related to touch
gestures. We provide only empty methods.
SeekBar sb = (SeekBar) findViewById(R.id.sbId); sb.setOnSeekBarChangeListener(this);
We get the reference to the SeekBar
widget and set a listener for it.
tv = (TextView) findViewById(R.id.tvId); String val = this.getString(R.string.init_tv_value); tv.setText(val);
We get the reference to the TextView
widget. We retrieve the
init_tv_value
from the string resources and set
it to the TextView
.
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { tv.setText(String.valueOf(progress)); }
When we move the thumb of the SeekBar
, the onProgressChanged()
method is called. The progress parameter is the current value of the SeekBar
.
The default range is 0..100. We set the current value of the
SeekBar
to the TextView
widget.
In this chapter of the Android development tutorial, we have written about
the SeekBar
widget.