SeekBar是android專門用來調整音量跟亮度放置在ui畫面上非常好看的ui元件
今天我想來介紹怎麼使用SeekBar並使用toast做通知方式的顯示。
toast是當件事情被觸發時,在畫面下方顯示出一段指定的文字。像是訊息通一樣,非常酷炫。
拉一個seekbar跟一個text做百分比的顯示
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="75dp"
android:max="100"
android:progress="0"/>
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="目前數值: 0/100" />
android:max="100"
設定最大值android:progress
設定預設值android:thumbTint
設定進度點顏色android:progressTint
設定進度條顏色
先宣告跟綁定
private SeekBar seekBar;
private TextView textView;
seekBar = (SeekBar) findViewById(R.id.seekBar);
textView = (TextView) findViewById(R.id.textView);
新增一個listener觀察seekbar並在滑動時改變textview文字,時時緊跟變化百分比
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
textView.setText("目前數值:" + progress + " / 100 ");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
我們可以直接在各行指令指定想要顯示的介面參數
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.seekBar);
textView = (TextView) findViewById(R.id.textView);
textView.setText("目前數值: 50 / 100");
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
textView.setText("目前數值:" + progress + " / 100 ");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Toast.makeText(MainActivity.this, "按住SeekBar", Toast.LENGTH_SHORT).show();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Toast.makeText(MainActivity.this, "放開SeekBar", Toast.LENGTH_SHORT).show();
}
});
}
}
但更好的做法是設一個變數context這樣我們想要更改toast顯示在哪個畫面時之後會更靈活跟方便
我們可以使用Context表達MainActivity
在toast指定Context指定的畫面上,做顯示設定的文字 private Context Context;
Context = MainActivity.this;
Toast.makeText(Context, "按住SeekBar", Toast.LENGTH_SHORT).show();
完整程式碼
public class MainActivity extends AppCompatActivity {
private SeekBar seekBar;
private TextView textView;
private Context Context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context = MainActivity.this;
seekBar = (SeekBar) findViewById(R.id.seekBar);
textView = (TextView) findViewById(R.id.textView);
textView.setText("目前數值: 50 / 100");
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
textView.setText("目前數值:" + progress + " / 100 ");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Toast.makeText(Context, "按住SeekBar", Toast.LENGTH_SHORT).show();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Toast.makeText(Context, "放開SeekBar", Toast.LENGTH_SHORT).show();
}
});
}
}