Android SeekBarの基本的な使い方をまとめたいと思います。
SeekBarのクラス構成
java.lang.Object | ||||
↳ | android.view.View | |||
↳ | android.widget.ProgressBar | |||
↳ | android.widget.AbsSeekBar | |||
↳ | android.widget.SeekBar |
ProgressBarを継承しているので、ProgressBarのAttributeをそのまま利用できます。
よく使うAttribute一覧
android:max |
SeekBarが最大の場合にセットされる値 |
android:min |
SeekBarが最小の場合にセットされる値 |
android:progress |
progress値の初期値を表す |
OnSeekBarChangeListener
SeekBarのプログレス量を変更した時に呼ばれるリスナーです。
このリスナー内でプログレスの値を取得することができます。
Public methods |
|
---|---|
abstractvoid | onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) プログレスの量が変わった時に呼ばれます。 |
abstractvoid | onStartTrackingTouch(SeekBar seekBar) Userがプログレスバーにタッチした時に呼ばれます。 |
abstract void | onStopTrackingTouch(SeekBar seekBar) Userがプログレスバーから離した時に呼ばれます。 |
シークバーが変更されている時に呼ばれるonProgressChanged関数です。
onProgressChanged
added in API level 1
1 2 3 |
void onProgressChanged (<a href="https://developer.android.com/reference/android/widget/SeekBar.html" data-mce-href="https://developer.android.com/reference/android/widget/SeekBar.html">SeekBar</a> seekBar, int progress, boolean fromUser) |
Parameters | |
---|---|
seekBar |
SeekBar : 対象のSeekBar |
progress |
int : 現在のプログレス値、値はmin・max attributeで設定した値内で変化します。default値は0~100です。 |
fromUser |
boolean : userが変更したかどうか。プログラム上で変更した場合はfalseが返ります |
使用例
上部のgifを例にしたサンプルコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
circleSeekBar = (SeekBar) view.findViewById(R.id.circle_seekBar); circleSeekBar.setMax(displaySize.x); circleSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { maskView.setRadius(progress / 2); maskView.invalidate(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); |
1 2 3 4 5 6 7 |
<SeekBar android:id="@+id/circle_seekBar" android:layout_width="215dp" android:layout_height="wrap_content" android:layout_alignBottom="@+id/deleteBtn" android:layout_centerHorizontal="true" /> |
以上です。