Android UI 之 SeekBar
转载自http://www.cnblogs.com/plokmju/p/android_ProgressBar.html,有改动
SeekBar是滑动条控件,间接继承自ProgressBar,也可以使用ProgressBar的属性设置。新增了属性android:thumb用以自定义滑块
当用户按住滑块进行滑动的时候,会触发一个SeekBar.OnSeekBarChangeListener事件,这是一个接口,需要开发人员实现三个方法:
onProgressChanged(SeekBar seekBar,int progress,boolean fromUser): 滑块在移动的时候响应。 seekBar为触发事件的SeekBar控件, progress为当前SeekBar的滑块数值, fromUser为是否用户拖动产生的响应。 onStartTrackingTouch(SeekBar seekBar):滑块开始移动的时候响应。 onStopTrackingTouch(SeekBar seekBar):滑块结束移动的时候相应。
Demo:
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 用于显示滑动状态 --> <TextView android:id="@+id/textview_state" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" /> <!-- 用于显示滑块数值 --> <TextView android:id="@+id/textview_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" /> <!-- 可以用android:thumb指定滑块图片 --> <SeekBar android:id="@+id/seekbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="20" /> </LinearLayout>
MainActivity.java:
package com.example.test; import android.app.Activity; import android.os.Bundle; import android.text.Html; import android.text.method.LinkMovementMethod; import android.view.Window; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; public class MainActivity extends Activity { private TextView state, num; private SeekBar seekBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); seekBar = (SeekBar) findViewById(R.id.seekbar); state = (TextView) findViewById(R.id.textview_state); num = (TextView) findViewById(R.id.textview_num); seekBar.setOnSeekBarChangeListener(seekBarChange); } private OnSeekBarChangeListener seekBarChange = new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { state.setText("停止拖动"); } @Override public void onStartTrackingTouch(SeekBar seekBar) { state.setText("开始拖动"); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { num.setText("进度值" + progress); } }; }