SeekBar 小部件
最后修改于 2012年11月5日
在本章的 Android 开发教程中,我们将介绍 SeekBar 小部件。
SeekBar 小部件用于从一系列值中选择一个值。用户拖动该小部件的滑块来选择特定值。为了处理 SeekBar 事件,我们实现了 SeekBar.OnSeekBarChangeListener 监听器。
SeekBar 示例
我们有一个 SeekBar 小部件和一个 TextView 小部件。SeekBar 的当前值显示在 TextView 中。Android manifest 文件保持不变。
<?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>
在 main.xml 布局文件中,我们定义了两个小部件。SeekBar 小部件和 TextView 小部件。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">SeekBar</string>
<string name="init_tv_value">50</string>
</resources>
这是 strings.xml 资源文件。init_tv_value 是 TextView 小部件的初始值。
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
}
}
SeekBar 的当前值被设置为 TextView 小部件。
public class MainActivity extends Activity implements
OnSeekBarChangeListener
MainActivity 类实现了 OnSeekBarChangeListener。我们需要定义三个抽象方法。onProgressChanged()、onStartTrackingTouch() 和 onStopTrackingTouch() 方法。最后两个方法未实现。它们与触摸手势有关。我们只提供空方法。
SeekBar sb = (SeekBar) findViewById(R.id.sbId); sb.setOnSeekBarChangeListener(this);
我们获取到 SeekBar 小部件的引用并为其设置监听器。
tv = (TextView) findViewById(R.id.tvId); String val = this.getString(R.string.init_tv_value); tv.setText(val);
我们获取到 TextView 小部件的引用。我们从字符串资源中检索 init_tv_value 并将其设置为 TextView。
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser)
{
tv.setText(String.valueOf(progress));
}
当我们移动 SeekBar 的滑块时,会调用 onProgressChanged() 方法。progress 参数是 SeekBar 的当前值。默认范围是 0..100。我们将 SeekBar 的当前值设置为 TextView 小部件。
在本章的 Android 开发教程中,我们已经介绍了 SeekBar 小部件。