[Android] SeekBar でボリューム入力

Android7 

ユーザーの数値入力をするときに、オーディオのボリューム入力のように、あるいは、 何%位 という感覚的な入力が適当な場合に SeekBar が使えます。
 

seekbar_1
device-2016-11-30-183806
Android Studio 2.2.2
Android 7.1.1

sponsored link

SeekBar

 
SeekBar では「draggable thumb」(ドラッグ可能な親指?)と呼ばれるツマミを動かしその位置を判断します。
 
リスナー、setOnSeekBarChangeListener を設定することでツマミのドラッグ前後とドラッグ中の状態に設定を追加することができます。
 

 
ドラッグ中のonProgressChanged() では int progress が見えているのでこの値を使って TextView に表示してみます。
 
コードをまとめてみると
 
MainActivity.java

 
activity_main.xml

 
初期値と最大値はそれぞれ
seekBar.setProgress(0);
seekBar.setMax(100);
にて設定できます
 

カスタマイズ

 
簡単にカスタマイズできるところを変更してみます。
 
背景色の変更:
 
これは既に前出の例で設定していますが、高さと横幅は
layout_height
layout_width
で設定でき、背景色は
backgroundでカスタマイズします。
 

 
ss2016-11-30-16-15-14
 
ツマミを画像に変更:
 
デフォルトで付いているアイコンをツマミにしてみます。
 

 

 
ss2016-11-30-16-10-33
 
shapeを使ってカスタマイズ:
 
progress bar とツマミをshapeでカスタマイズしてみたいと思います。
 
ツマミのshapeは
custom_thumb.xml としてdrawableに入れます。

 
またprogress barの部分は
custom_progress.xml として同様にdrawableに入れます。

 
ツマミで移動するのみ追随させるためにclipを使っています。
 
これで新しくレイアウトファイルを作ると
test_layout.xml

 
これを
setContentView(R.layout.test_layout);
としてMainActivityに設定すればこのようになりました。
 
device-2016-11-30-183806